Контекст устройств. GDI, драйверы и устройства вывода., страница 8

Незаполненный объект растрового изображения создается с помощью функции CreateBitmap. Хотя эту функцию и можно использовать для создания цветных растровых изображений, ее рекомендуется применять только для создания монохромных изображений; для цветных растровых изображений используйте функцию CreateCompatibIeBitmap.

Объекты растровых изображений зависят от устройства. Существуют функции, позволяющие приложению выводить не зависимые от устройства растровые изображения (device-independent bitmap — DIB). Это то, что хранится в BMP-файлах Windows.

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

Чтобы загрузить растровое изображение из файла ресурсов, используйте функцию LoadBitmap. Эта функция создает объект растрового изображения и инициализирует его изображением из файла ресурсов, что определяется вторым параметром функции.

Отсечение

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

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

Область отсечения обычно (но не всегда) является прямоугольной областью. В табл. перечислены различные типы областей и соответствующие функции для их создания.

Область отсечения

Функции создания области

Овальная область

CreateEllipticRgn, CreateEllipticRgnlndirect

Многоугольная область

CreatePolygonRgn, CreatePolyPolygonRgn

Прямоугольная область

CreateRectRgn, CreateRectRgnlndirect

Прямоугольная область со скругленными углами

CreateRoundRectRgn

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

Приложение может выбрать область отсечения в контекст устройства, вызвав функцию SelectObject или SelectClipRgn. Эффект этих двух функций эквивалентен. Еще одной функцией, позволяющей объединять новые области отсечения с существующими областями в стиле функции CombineRgn является SelectClipRgnExt.

Другая форма отсечения осуществляется при использовании путей отсечения. Путь отсечения может определить сложные фигуры отсечения, которые не могут быть определены через области отсечения. Путь отсечения — это путь, созданный с помощью функций BeginPath и EndPath, а затем выбранный в качестве пути отсечения при вызове SelectClipPath.

Функции рисования

Мы рассматривали идею контекста устройства как "холст", в который функции GDI выводят свою графику; а также средства GDI, позволяющие выполнять рисование (перья, кисти и шрифты). В этом разделе содержится обзор операций рисования, используемых GDI.

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

Линии

Простая линия создается при вызове функции MoveToEx с последующим вызовом функции LineTo. Функции MoveToEx обновляет текущую позицию, которая является точкой координатного пространства контекста устройства и используется многими функциями рисования. Функция LineTo создает линию из этой позиции в позицию, определенную параметрами функции. Линия рисуется с использованием пера, выбранного в этот момент в контексте устройства.