Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
к зачету по техпрог.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
139.43 Кб
Скачать

Библиотека api функций для рисования gdi32.Dll

  • Библиотека GDI это набор функций для вывода на внешние устройства. Они предоставляют уровень абстракции, скрывающий различие между разными видео картами или принтерами.

  • Программист просто вызывал нужную функцию Windows API для выполнения требуемой работы и GDI определял, как выполнить ее для конкретной видео карты.

  • Если пользователь имел несколько устройств отображения, например, дисплеи и принтеры, то GDI позволяет показать на экране, как будет выглядеть результат вывода на принтер.

  • Для вывода на принтер вместо дисплея достаточно только указать Операционной Системе, что устройством вывода является принтер и затем использовать те же функции API, которые использовались и для дисплея.

  • Библиотека GDI предоставляет достаточно высоко-уровневый API для разработчиков, но все равно этот API основывается на наборе C – подобных функций.

Основной класс рисования Graphics

  • Рисование на поверхности формы (ЭУ) можно выполнить только с помощью объекта класса Graphics.

  • Объект класса Graphics позволяет выполнять рисование на заданной поверхности (в окне формы, вывод на принтер или плоттере).

  • Реализует интерфейс IDeviceContext, который включает методы для получения и освобождения существующего указателя на контекст устройства операционной системы (Windows device context, hdc - handle of context device)

  • Использует интерфейс (набор функций) Graphic Device Interface + (GDI+)

  • Пространство имен:  System.Drawing (Сборка: System.Drawing.dll).

  • Класс Graphics включает 72 метода и 18 свойств.

Основные методы класса Graphics

  • void Clear (Color clr) - закраска окна

  • DrawString(…) – рисование текста

  • DrawLine(…) – рисование линий

  • DrawRectangle(…) – рисование прямоугольников

  • DrawEllipse(…) – рисование эллипсов

  • DrawCurve(…) – рисование кривых

  • DrawPoligon(…) – рисование многоугольников

  • DrawPie(…) – рисование секторов круга

Получение объекта Graphics

  • Можно получить ссылку на объект Graphics используя объект формы (или экземпляр производный от Control) с помощью метода CreateGraphics():

Graphics gfx = frm.CreateGraphics(); // получение объекта

gfx.Dispose(); // уничтожение объекта

  • В обработчик события Paint объект Graphics передается с помощью параметра PaintEventArgs в виде свойства Graphics

Событие Paint

  • OC рисует все элементы окна, кроме клиентской области

  • Когда ОС определяет, что нужно перерисовать поверхность клиентской области, то она посылает приложению, которое владеет данным окном сообщение WM_PAINT.

  • После получения сообщения WM_PAINT класс Control инициирует событие Paint.

  • При обработке этого события программа должна заново нарисовать содержание окна, или отдельную его область.

  • Программа может сама вызвать создание события WM_PAINT используя метод класса Control :

Invalidate() или Invalidate(Rectangle rec)

Выполнение рисования

  • Рисовать можно в любом методе класса на поверхности любого окна на которое есть ссылка (например frm).

  • Используя ссылку frm нужно получить объект Graphics для данной формы:

Graphics gfx = frm.CreateGraphics(); // получение объекта

  • Используя данный объект можно выполнять рисование.

  • Следует помнить, что если пользовательская область окна портится (Invalidated), то для ее восстановления ОС посылает сообщение WM_PAINT (событие Paint).

  • Обработчик события Paint должен заново нарисовать пользовательскую область.

  • Если требуется в окне что-то, что должно сохраняться при порче окна, то оно должно рисоваться в обработчике события Paint.