Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






L. Draw(graph,pen2, 5,-2,20,400,0);

Using System;

Using System.Collections.Generic;

Using System.ComponentModel;

Using System.Data;

Using System.Drawing;

Using System.Linq;

Using System.Text;

Using System.Windows.Forms;

Namespace Лаб_2_01

{

public partial class Form1: Form

{

public Graphics graph, graph0; // поверхность, на которой рисуются детали

public Pen pen1, pen2, pen3; // перья разных цветов для рисования линий и контуров

Public Form1()

{

InitializeComponent();

graph = pictureBoxLend.CreateGraphics(); // новая поверхность на рисунке

graph0 = this.CreateGraphics(); // новая поверхность на форме

pen1 = new Pen(new SolidBrush(Color.Red));

pen1.Width = 3;

}

Private void button3_Click(object sender, EventArgs e)

{ // 10 точек, расположенных на прямой по умолчанию

Pen pen2 = new Pen(new SolidBrush(Color.Green));

Dots1 L = new Dots1(10);

L.Draw(graph, pen2, 20, 20, 10, 10, 0);

}

Private void button2_Click(object sender, EventArgs e)

{ // Четыре точки в вершинах прямоугольника 20х40 мм

double[, ] M = { { -10, -20 }, { -10, +20 }, { +10, -20}, { +10, +20 }};

DotsPic L = new DotsPic(M);

// Отображается в масштабе 4 пикселя на 1 мм, снизу вверх,

// начиная с позиции 200, 200 мм

// с поворотом на 23 градуса против час. стрелки

L.Draw(graph, pen1, 4, -4, 200, 200, Math.PI*23.0/180.0);

}

Private void button1_Click(object sender, EventArgs e)

{ // Буква N, полученная путем соединения четырех точек

// с параметрами из предыдущей кнопки

double[, ] M = { { -10, -20 }, { -10, +20 }, { +10, -20}, { +10, +20 }};

Lom1 L = new Lom1(M);

L.Draw(graph, pen1, 4, -4, 200, 200, Math.PI*23.0/180.0);

}

Private void button4_Click(object sender, EventArgs e)

{ // График функции, изображенный точками

Pen pen2 = new Pen(new SolidBrush(Color.Cyan));

DotBar1_X2SinX L = new DotBar1_X2SinX(100);

L.Draw(graph, pen2, 5, -2, 20, 400, 0);

}

Private void button5_Click(object sender, EventArgs e)

{ // График функции, изображенный отрезками

Pen pen2 = new Pen(new SolidBrush(Color.Blue));

pen2.Width = 2;

DotBar2_X2SinX L = new DotBar2_X2SinX(100);

L.Draw(graph, pen2, 5, -2, 20, 400, 0);

}

}


Реалізація вказаної ієрархії класів може бути наступною:

/***********************************************************************/

struct G2p // Уровень 1

// Точка в 2-мерном Декартовом пространстве

// с действительными координатами

{ public double x, y; // координаты точки (мм)

public G2p(double x1, double y1) // Конструктор

{ x = x1; y = y1; }

public G2p Affine(double mx1, double my1, // 1)масштабные коэффициенты.

double x01, double y01, // 3)величина сдвига в мм.

double alpha1) // 2)угол поворота в радианах.

// Новая точка, полученная в результате

// масштабирования, сдвига и поворота

{ double x2 = x * mx1;

double y2 = y * my1;

double xa = x2 * Math.Cos(alpha1) + y2 * Math.Sin(alpha1);

double ya = x2 * -Math.Sin(alpha1) + y2 * Math.Cos(alpha1);

return new G2p(xa + x01, ya + y01);

}

}

/***********************************************************************/

class Dots1 // Уровень 1

// Базовая геометрическая фигура

// на основе массива опорных точек,

// без конкретизации способа его заполнения и отображения

{ protected int n=0; // количество точек в фигуре

protected double[, ] coord; // координаты точек (x, y) в мм.

public Dots1(int n1) // Конструктор с фигурой по умолчанию

{ n = n1;

coord=new double[n, 2];

<== предыдущая лекция | следующая лекция ==>
Console.ReadKey(); | Современного русского литературного языка




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.