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

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

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

Хотя BitBlt использует логические координаты и, если необходимо, выполняет при копировании масштабирование, но она терпит неудачу, если используется преобразование с вращением или сдвигом.

Кроме копирования исходных точек в точки назначения, BitBlt также объединяет эти точки, используя разнообразные операции.

Разновидностью функции BitBlt является MaskBIt Эта функция использует третье растровое изображение как маску при выполнении операции.

Функция PatBlt закрашивает растровое изображение назначения, используя текущую кисть.

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

Функция PlgBlt копирует исходное растровое изображение в параллелограмм назначения. Параллелограмм задается массивом из трех точек, представляющих 3 его вершины, четвертую вершину можно вычислить по векторной формуле D=B+C-A.

До сих пор растровые изображения обсуждались применительно к определенному контексту устройства, следовательно, они зависимы от устройства Windows также обрабатывает независимые от устройства растровые изображения (DIB), которые хранятся в памяти или на жестком диске DIB определяется через структуру BITMAPINFO. Приложения могут создать DIB посредством функции CreateDIBitmap Биты в DIB можно устанавливать, используя функцию SetDIBbits; таблицу цветов DIB можно изменять, используя функцию SetDIBClorTable. Функция SetDIBitsToDevice копирует DIB на устройство, функцию StretchDIBits можно использовать для копирования битов из определенного устройства в независимое от устройства растровое изображение.

Пути

Мы уже встречались с путями при рассмотрении отсечения. Пути представляют собой сложные фигуры, созданные последовательностью вызовов нескольких функций вывода GDI, включающих, например, функции Rectangle, Ellipse, TextOut, LineTo, PolyBezier, Polygon.

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

Вызов EndPath выбирает путь в контекст устройства. После этого приложения могут выполнять следующие действия:

• Рисовать контур или содержимое пути или и то, и другое (StrokePath, FillPath, StrokeAndFillPath)

• Использовать путь для отсечения (SelectClipPath) « Преобразовывать путь в область (PathToRegion)

• Изменять путь (GetPath, FlattenPath, WidenPath)

Вывод текста

Простейшая функция GDI для вывода текста — TextOut. Эта функция выводит текст в указанных координатах, используя выбранный шрифт Разновидностью этой функции является функция TabbedTextOut, которая распространяется также на символы табуляции Функция PolyTextOut используется для вывода последовательности текстовых строк в одном вызове функции Эта функция также принимает прямоугольник, который используется для непрозрачности или отсечения.