Private void Form1_Paint(object sender, PaintEventArgs e)
Стр 1 из 5Следующая ⇒ Лабораторная работа №2 Разработка приложения, имитирующего движение графических объектов Цель работы Изучить теоретические принципы использования графических объектов GDI+ и получить практические навыки разработки программ, имитирующих движение графических объектов.
Краткая теория Работа с перьями Все методы класса Graphics, предназначенные для рисования фигур или текста, получают через один из параметров перо класса Pen или кисть класса Brush, с помощью которых и выполняется рисование. Перья используются для рисования линий и простейших геометрических фигур и создаются как объекты класса Pen. Вот соответствующие конструкторы: public Pen(Color); public Pen(Color, float); public Pen(Brush); public Pen(Brush, float); Первый из этих конструкторов создает перо заданного цвета. Цвет задается при помощи объекта класса Color. Второй конструктор позволяет дополнительно задать толщину пера. Третий и четвертый конструктор создают перо на основе кисти, причем в четвертом конструкторе можно указать толщину создаваемого пера. После того как перо создано, программа может определить его атрибуты при помощи свойств класса Pen. Некоторые из этих свойств перечислены в таблице.
Устанавливая значение свойства Color и Width, приложение может изменить соответственно цвет и ширину линии, рисуемой пером.
Если надо нарисовать пунктирную или штрихпунктирную линию, приложение должно задать необходимое значение для свойства DashStyle. При этом допускается изменять вид точек и тире пунктирных и штрихпунктирных линий (свойство DashCup), задавать расстояние от начала линии до начала штриха (свойство DashOffset) или даже вовсе задать произвольный вид для штрихов и разделяющих эти штрихи пробелов (свойство DashPattern). При необходимости изменить внешний вид концов линий используйте свойства StartCup и EndCup, задающие стиль концов линий. Свойство LineCap определяет форму концов линий. Если нужно указать стык между двумя различными линиями, то стиль этого стыка задается свойством LineJoin, а предельная толщина стыка - стилем MiterLimit. При помощи перьев можно рисовать не только прямые линии, но и любые геометрические фигуры.
Работа с кистью Внутренняя область окна и замкнутых геометрических фигур может быть закрашена при помощи кисти. В приложениях Мiсrosоft.NEТ Framework кисти создаются на базе классов, производных от абстрактного класса Brush. Это следующие классы: -Brushes; -SolidBrush; -HatchBrush; -TextureBrush; -LinearGradientBrush; -PathGradientBrush.
Кисть для сплошной закраски Простейшие из кистей - это кисти Brushes и SolidBrush, предназначенные для сплошной закраски фигур. Эти кисти создаются при помощи конструктора с одним параметром, задающим цвет в виде объекта класса Color. Ниже приведена часть приложения, в котором кисть класса Brushes применяется для создания перьев, с помощью которых приложение рисует прямоугольник и эллипс. Кроме этого, кисть черного цвета создается и для рисования текста: Private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics;
g.Clear(Color.White); g.DrawString(Text,new Font("Helvetica",12),Brushes.Black,0,0); g.DrawRectangle(new Pen(Brushes.Black, 2), 10, 30, 200,100); g.DrawEllipse(new Pen(Brushes.Black, 2), 150, 120, 100,130); } Кисти типа HatchBrush При помощи класса НаtchBrush можно создать прямоугольную кисть заданного стиля с заданным цветом изображения и фона. Для создания кистей этого типа предусмотрено 2 конструктора: public HatchBrush(HatchStyle, Color); public HatchBrush(HatchSty1e, Color, Color); Первый из этих конструкторов позволяет создать кисть заданного стиля и цвета, а второй дополнительно позволяет указать цвет фона. Далее в таблице перечислены различные стили кисти HatchBrush, представляющие собой константы перечисления HatchStyle.
Для демонстрации использования кистей класса НаtchBrush ниже представлен исходный текст обработчика событий Form1_Paint:
using System.Drawing.Drawing2D; ... private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; HatchBrush hb = new HatchBrush(HatchStyle.Cross, Color.Black, Color.White); g.FillRectangle(hb, 10, 30, 200, 100); g.DrawRectangle(new Pen(Brushes.Black,1),10,30,200,100); HatchBrush hb1 = new HatchBrush(HatchStyle.DottedGrid, Color.Black, Color.YellowGreen); g.FillEllipse(hb1, 150, 120, 100, 130); g.DrawEllipse(new Pen(Brushes.Black,1),150,120,100,130); HatchBrush hb2 = new HatchBrush(HatchStyle.Divot, Color.Tomato, Color.Tan); g.FillEllipse(hb2, 60,160,60,60); g.DrawEllipse(new Pen(Brushes.Blue, 2), 60, 160, 60, 60); } Как видно, здесь последовательно создаются 3 различные кисти, а затем используются для закраски внутренних областей прямоугольника и эллипсов. Результат работы приложения показан на рисунке 2.1.
Рис. 2.1 – Использование кистей класса НаtchBrush
Кисти типа TextureBrush Если представленные выше кисти не подходят, то есть возможность создать собственную кисть на базе TextureBrush в виде произвольного изображения. Такая кисть, называемая текстурной, может иметь любой внешний вид и любой цвет.
Для создания кисти класса TextureBrush приложение может воспользоваться одним из следующих конструкторов: public TextureBrush(Image); public TextureBrush(Image, Rectangle); public TextureBrush(Image, RectangleF); public TextureBrush(Image, WrapMode); public TextureBrush(Image, Rectangle, ImageAttributes); public TextureBrush(Image, WrapMode, Rectangle); public TextureBrush(Image, WrapMode, RectangleF); Самому простому из этих конструкторов нужно передать изображение, загруженное из ресурсов приложения или из внешнего файла. Структуры Rectangle и RectangleF позволяют задать границы прямоугольной области, ограничивающие изображение кисти. С помощью констант перечисления WrapMode программа может задать способ размещения текстуры по горизонтали и вертикали. Эти константы приведены в таблице.
И, наконец, параметр ImageAttributes позволяет задать различные атрибуты изображения, такие, как количество цветов и способ рисования. Описание этого параметра и класса ImageAttributes можно найти в электронной справочной документации системы Microsoft Visual Studio.NET. Закраску с помощью текстурной продемонстрировано в приведенном ниже коде:
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|