Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обучение VC++ / ЛекцииИнтернетС++ / Лекция_лаб_практикум.doc
Скачиваний:
64
Добавлен:
16.02.2016
Размер:
932.35 Кб
Скачать

Интерфейс графического устройства

Работая с Windows приложениями вы постоянно сталкиваетесь с элементами интерфейса графического устройства (GDI). Всякий раз, когда программа выводит что-нибудь на экран монитора или принтер, она обязана воспользоваться GDI – функциями. Эти функции позволяют рисовать точки, линии, прямоугольники, многоугольники, эллипсы, растровые изображения и выводить текст. Как вам уже должно быть известно – все рисование ведется в контексте устройства, который связан с физическим устройством.

Вспомним что такое контекст устройства

Контекст устройства (Device context) – ключевой элемент GDI, служащий для представления физического устройства. С каждым объектом “контекст устройства” С++ связан контекст устройства Windows, идентифицируемый 32 разрядным описателем типа HDC. Библиотека MFC предоставляет несколько классов контекста устройства.

Классы контекстов устройств:

Класс

Описание

CDC

Базовый класс для контекстов устройств; используется непосредственно для доступа ко всем экранным и не экранным контекстам устройств, таких как принтеры.

CWindowDC

Контекст экрана для всего окна, включая клиентскую и не клиентскую области.

CСlientDC

Контекст экрана для клиентской области окна; используется, например, при рисовании в ответ на события от мыши.

CpaintDC

Контекст экрана, используемый в функции OnPaint() оконных классов; в конструкторе автоматически вызывается функция BeginPaint, а в деструкторе – EndPaint.

CMetaFileDC

Контекст устройства для метафайла Windows, который содержит последовательность команд GDI, необходимых для создания образа.

Работа с gdi объектами

Каждый тип объектов GDI Windows представлен отдельным классом MFC. CGdiObject – абстрактный базовый класс для классов объектов GDI. Объект GDI представляется С++ объектом некоторого класса , производного от CGdiObject.

Вот эти классы:

Имя класса

Расшифровка

Описание

CBitmap

Растровое изображение

Массив битов, в котором каждой точке дисплея соответствует один или несколько байт. Растровые изображения обычно используют для хранения картинок, а также для создания кистей.

CBrush

Кисть

Точечный шаблон, используемый для закраски областей

CFont

Шрифт

Полный набор символов, некоторой гарнитуры и некоторого размера. Обычно шрифты хранятся на диске как ресурсы, причем некоторые шрифты специфичны для определенных устройств.

CPallete

Палитра

Интерфейс преобразования цветов, позволяющий приложениям в полной мере использовать цветовые возможности устройства вывода, не мешая другим приложениям.

CPen

Перо

Инструмент для рисования линий и границ фигур. Можно задать цвет и толщину пера, а также указать, будут ли линии сплошными, пунктирными или штриховыми.

CRgn

Регион

Область, которая представляет собой многоугольник, эллипс или их комбинацию. Регионы можно использовать для закраски, обрезания выводимого изображения и проверки на попадание курсора мыши на определенные участки.

Правила работы с GDI объектами.

  1. Создать новый GDI объект с нужными свойствами.

  2. Сохранить старый объект этого класса и выбрать в текущем контексте только что созданный.

  3. Произвести графические работы

  4. Восстановить ранее сохраненный объект.

Замечание

Пункты 2 и 4 могут быть заменены на сохранить текущий контекст устройства, и восстановить текущий контекст устройства соответственно.