
- •Графические возможности интегрированной среды Visual Studio и основные приёмы разработки программ под Windows.
- •1. Теоретическая часть.
- •1.1. Контекст графического устройства
- •1.1.2. Контексты устройств и графический объект
- •1.1.3. Пример рисования форм
- •1.3. Обзор пространства имен System.Drawing
- •1.3.1. Служебные типы System.Drawing
- •1.3.4. Класс Region
- •1.4. Класс Graphics
- •1.5. Сеансы Paint
- •1.6. Объявление клиентской области формы недействительной
- •1.7. Получение объекта Graphics вне обработчика события Paint
- •1.8. Удаление объекта Graphics
- •1.9. Блок-схемы алгоритмов функционирования.
- •2. Формирование контура фигур
- •2.1. Возможные способы формирования линий.
- •3. Разработка приложения.
- •3.1. Конструирование главной формы
- •3.2. Реализация первого способа рисования.
- •3.3. Реализация второго способа.
- •4. Задание на лабораторную работу
- •5. Содержание отчета по лабораторной работе.
1.1.2. Контексты устройств и графический объект
В GDI способ, с помощью которого определяется тип устройства для вывода информации, основан на использовании объекта, известного как контекст устройства (device context (DC)). Контекст устройства хранит информацию о конкретном устройстве и способен пееревести вызовы GDI API функций в инструкции, отсылаемые на это устройство. Можно запросить у контекста устройства информацию о том, какими возможностяхми обладает соответствующее устройство (например, возможно цветное распечатывание или только черно-белое) и установить нужные характеристики. Если запросить усстройство сделать что-либо, чего оно не может выполнить, то контекст устройства обнаружит это и, в зависимости от ситуации, предпримет соответствуюшие действия, выбрасывая исключение или изменяя сам запрос на наиболее ближайшее по смыслу действие.
Однако, контекст устройства связан не только с аппаратными средствами. Он работает еще и как мост с ОС Windows и, следовательно, способен учитывать любые требования или ограничения, которые случаютсяя при вырисовывании графики. Например, если Windows знает, что требуется обновить только часть окна приложения, то контекст устройства способен перехватить и исключит попытки рисовать вне этой области. Благодаря взаимодействию с Windows, работа с контекстом устройства поможет упростить ваши программы и в других ситуациях. Например, техническим устройствам нужно сообщить: где рисовать и, обычно, это требует указания координат относительно левого-верхнего угла экрана (или другого устройства вывода). Однако, как правило, ваше приложение вырисовывает что-либо в определенном месте внутри своей клиентной области. (Кстати, клиентная область Windows представляет собой только часть окна, используемую для рисования, и в большинстве случаев она имеет белый цвет фона). Но, поскольку это окно может располагаться, в общем случае, в любом месте экрана, то его произвольное перемещениие представляет собой довольно трудную задачу, поскольку связано с преобразованием старых координат в новые. Однако, контекст устройства всегда знает – где находится ваше окно и способен выполнить такое преобразование автоматически. Это означает, что можно в любое время запросить у контекста устройства положение рисуемого объекта внутри вашего окна не беспокоясь о том, где в настоящий момент находится на экране окно вашего приложения.
Можно легко заметить, что контекст устройства представляет собой очень мощное средство, и не удивительно, что при использовании GDI все рисование должно осуществляться с помощью контекста устройства. Иногда контекст устройства используют даже для выполнения таких операций, которые не связаны с рисованием на экране или другом устройстве вывода. Например, если в вашем распоряженнии имеется битовая память в которой необходимо выполнить какие-то преобразования (масштабирование, вращение), то с помощью контекста устройства это можно сделать гораздо эффективнее потому, что контекст устройства полностью использует все преимущества конкретного устройства вывода на вашем компьютере и чтобы выполнить нужные операции максимально быстро.
В GDI+ продолжается использование контекста устройства, но теперь оно приобретает более дружественное название. Оно заимствовано из базовых .NET классов и известно как Graphics. Можно легко увидеть, что основная доля рисования осуществляется с помощью объекта Graphics. На самом деле, поскольку класс System.Drawing.Graphics - это класс, предназначенный для управления большинством операций, связанных с рисованием. Понимание того, как манипулировать этим объектом представляется ключевым моментом в понимании характерных особенностей рисования с помощью GDI+.