- •15. Работа с графикой.
- •С точки зрения приложений интерфейс GDI состоит из контекста отображения (display context) и
- •Функции рисования GDI, входящие в программный интерфейс Win32 API, не имеют параметров, указывающих
- •Для этого внесём в класс Form1 дополнительное булевское поле и реализуем три обработчика:
- •Те же команды можно повторить для панели Panel1:
- •При рисовании подобным образом проявляется неприятный эффект – при перерисовке формы изображение не
- •Основные структуры данных
- •Структура Point
- •Структура Rectangle
- •В структуре определены два конструктора с аргументами:
- •Представление цвета
- •Для задания цвета можно также использовать один из перегруженных методов FromArgb:
- •Кисти и перья
- •В классе HatchBrush определены штриховые кисти. Их конструкторы:
- •Перья описываются классом System.Drawing.Pen.
- •Рисование линий и фигур
- •Класс Graphics содержит множество методов, позволяющих рисовать различные графические фигуры.
- •Параметры методов означают следующее:
- •Рисование линий осуществляется с помощью методов:
- •Вывод текста
- •Пример:
- •Перерисовка окна приложения
- •Очень часто перерисовка окна должна происходить в определенные моменты времени по инициативе приложения.
- •Пример:
- •4. Cоздадим метод-обработчик таймера: private void timer1_Tick(object sender,
- •Пример :
- •3. Далее опишем пользовательский метод DrawSheep(), рисующий фигуру:
- •4. Реализуем анимацию:
15. Работа с графикой.
Для взаимодействия приложений Microsoft Windows с
графическими устройствами такими, как видеоадаптер или принтер предназначен интерфейс графических устройств GDI.
Когда приложения обращаются к GDI для выполнения операции вывода графического изображения, они работают не с реальными (физическими) устройствами вывода, а с логическими устройствами. Приложения
Microsoft Windows не определяют тип видеоадаптера (EGA, VGA, SVGA и т. п.), а работают с логическим видеоадаптером, имеющим широкие характеристики: способность отображать практически любой цвет, огромное разрешение и т. д.
Выполняя запрос приложения, GDI обращается к драйверу соответствующего устройства вывода, работающему, в свою очередь, непосредственно с физическим устройством вывода. В процессе
выполнения запроса GDI (или драйвер) учитывает
ограниченные возможности видеоадаптера и его
С точки зрения приложений интерфейс GDI состоит из контекста отображения (display context) и инструментов, предназначенных для рисования.
Контекст отображения можно сравнить с листом бумаги, на котором приложение рисует то или иное графическое
изображение, а также пишет текст. Инструменты для рисования - это перья, кисти (а также шрифты и даже целые графические изображения), с помощью которых создается изображение.
Кроме контекста отображения и инструментов для
рисования, приложениям доступны десятки функций программного интерфейса GDI, предназначенные для работы с контекстом отображения и инструментами. Что же касается приложений Microsoft .NET Framework, то они реализуют возможности интерфейса GDI+ с помощью набора соответствующих классов и интерфейсов.
Приложение может подключать к контексту отображения различные инструменты (например, перья различной
толщины и цвета. Поэтому, если надо нарисовать линию красного или зеленого цвета, перед выполнением
операции следует создать объект, представляющий
Функции рисования GDI, входящие в программный интерфейс Win32 API, не имеют параметров, указывающих цвет или толщину линии. Такие параметры хранятся в контексте
отображения.
Приложение может создать контекст отображения не только
для окна приложения, но и для любого другого графического устройства вывода, например для принтера. В этом случае оно может рисовать на принтере различные
те же функции, что и для В системе С# интерфейс GDI+
приложения.
представлен классом
Graphics, реализующим в себе как свойства контекста отображения, так и инструменты, предназначенные для рисования в этом контексте.
В качестве простейшего примера использования интерфейса GDI+ разработаем приложение, позволяющее рисовать на самой форме с помощью мыши.
Для этого внесём в класс Form1 дополнительное булевское поле и реализуем три обработчика:
Те же команды можно повторить для панели Panel1:
При рисовании подобным образом проявляется неприятный эффект – при перерисовке формы изображение не восстанавливается.
Решение – использовать событие Paint формы или
Основные структуры данных
Структура Size
Предназначена для хранения ширины и высоты объекта и имеет для этого свойства Width и Height.
Для создания объекта Size с нулевыми значениями Width и Height с помощью конструктора по умолчанию:
Size sz = new Size();
Изменить значения свойств в последствии можно, например,
следующим образом: sz.Width = 40; sz.Height = 60;
Создать структуру можно, используя конструкторы |
с |
|
аргументами: |
|
|
public |
Size(int, int); |
|
public |
Size(Point); |
|
Конструкторы с аргументами позволяют, в момент создания,
инициализировать разные экземпляры структуры по- разному
Size sz1 = new Size(10,20); // Width = 10, Height = 20;
Структура Point
Содержит свойства X и Y целого типа. Для создания точки “pt” можно использовать конструктор по умолчанию:
Point pt = new Point();
Конструктор по умолчанию при создании точки обнуляет значения свойств X и Y.
В дальнейшем координаты точки можно изменить, например, следующим образом:
pt.X = 25; pt.Y = 75;
Инициализировать новую точку класса Point, можно используя, конструкторы с аргументами:
public Point(Size); public Point(int, int);
Например: |
|
|
|
|
Point |
pt1 = new Point(10,20); // |
pt1.X=10, |
pt1.Y=20 |
|
Size |
szm = new Size(27,45); |
|
|
|
Point pt2 = new Point(szm); |
// |
pt2.X=27, |
pt2.Y=45 |
Структура Rectangle
Предназначена для определения координат и размера прямоугольника. Используются следующие свойства:
Свойства для чтения и записи:
Location − координата левого верхнего угла прямоугольника
X − определяет x-координату левого верхнего угла прямоугольника;
Y − определяет y-координату левого верхнего угла прямоугольника;
Size − определяет размер прямоугольника; Height − определяет высоту прямоугольника; Width − определяет ширину прямоугольника:
Свойства только для чтения:
Left и Top − определяют соответственно X и Y координаты
левого верхнего угла прямоугольника;
Right и Bottom − определяют соответственно X и Y