Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
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];
|