130 likes | 353 Views
Лекция. Графика в WinForms. Рисование в WinForms. Поверхность рисования - объект Graphics Control.CreateGraphics () Инструменты рисования Pen Brush Графические примитивы Line Rectangle Ellipse Image Text. Draw… Fill…. Класс Color.
E N D
Лекция Графика в WinForms
Рисование в WinForms • Поверхность рисования - объект Graphics Control.CreateGraphics() • Инструменты рисования Pen Brush • Графические примитивы Line Rectangle Ellipse Image Text Draw… Fill…
Класс Color publicstaticColorFromArgb(intargb); publicstaticColorFromArgb(int alpha, ColorbaseColor); publicstaticColorFromArgb(int red, int green, int blue); publicstaticColorFromArgb(int a, int r, int g, int b); publicstaticColorFromName(string name);
Класс Pen public Pen(Brushbrush); public Pen(Colorcolor); public Pen(Brushbrush, float width); public Pen(Colorcolor, float width);
Класс Brush System.Drawing.Brush System.Drawing.Drawing2D.HatchBrush System.Drawing.Drawing2D.LinearGradientBrush System.Drawing.Drawing2D.PathGradientBrushSystem.Drawing.SolidBrushSystem.Drawing.TextureBrush
Нарисовать что-то на чем-нибудь 1-й способ. • Получить объект Graphics. • Приготовить инструмент. • Вызвать метод рисования. 2-й способ. Сделать то же в обработчике события Paint.
Рисование мышью Обработать события MouseDown, MouseMove, MouseUp boolisDrawing;// флаг рисования (true– идет отрисовка) Point last; // последняя нарисованная точка privatevoid panel1_MouseDown(object sender, MouseEventArgs e) { isDrawing = true; last = e.Location; } privatevoid panel1_MouseMove(object sender, MouseEventArgs e) { if (isDrawing) { Graphics g = panel1.CreateGraphics(); g.DrawLine(Pens.Blue, last, e.Location); last = e.Location; // comment it! } } privatevoid panel1_MouseUp(object sender, MouseEventArgs e) { isDrawing = false; }
Обработка события Paint List<Point> points = newList<Point>(); boolisDrawing; privatevoid panel1_MouseDown(object sender, MouseEventArgs e) { points = newList<Point>(); points.Add(e.Location); isDrawing = true; } privatevoid panel1_MouseMove(object sender, MouseEventArgs e) { if (isDrawing){ points.Add(e.Location); Graphics g = panel1.CreateGraphics(); for (inti = 0; i < points.Count - 1; i++) g.DrawLine(Pens.Blue, points[i], points[i + 1]); } } privatevoid panel1_MouseUp(object sender, MouseEventArgs e) { isDrawing = false; } privatevoid panel1_Paint(object sender, PaintEventArgs e) { for(inti = 0; i < points.Count - 1; i++) e.Graphics.DrawLine(Pens.Blue, points[i], points[i + 1]); }
Рисование модели Picture – коллекция линий Line – коллекция точек classPicture { List<Line> lines = newList<Line>(); publicboolIsDrawing {set; get;} internalvoid Add(Lineline) { lines.Add(line); } internalvoidAddPoint(Pointpoint) { Line last = lines[lines.Count - 1]; last.AddPoint(point); } internalvoid Draw(Graphics g) { foreach (var line in lines) line.Draw(g); } } classLine { List<Point> points; public Line(Point p) { points = newList<Point>(); points.Add(p); } publicvoidAddPoint(Point p) { points.Add(p); } internalvoid Draw(Graphics g) { g.DrawLines(Pens.Blue, points.ToArray()); } }
Графический редактор Figure – абстрактная фигура Picture – коллекция фигур Фигура – линия, прямоугольник, эллипс Выбрать тип фигуры Начать рисование фигуры Добавить точку к фигуре Закончить рисование фигуры Выбрать цвет линии Выбрать цвет заливки Сохранить рисунок в файле Восстановить из файла Представление
Самостоятельно • Написать программу “Графический редактор”, которая позволяет: • рисовать при помощи кривых, отрезков, прямоугольников и эллипсов; • выбирать цвет контура и заливки; • сохранять и загружать сделанные в редакторе рисунки из файлов.