Краткие теоретические сведения. Помимо описанных выше графических примитивов, GDI работает также и с растровыми изображениями, то есть целыми массивами (матрицами) пикселей

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

GDI предоставляет функции манипулирования целыми фрагментами изображений:

BitBlt() — копирование прямоугольной области из одного контекста в другой без каких-либо преобразований;

StretchBlt() — копирование области с масштабированием по обоим осям (обычно с уменьшением, так как при растяжении изображения заметно портится);

MaskBlt() — перенос с маскированием части изображения;

PlgBlt() — перенос прямоугольного фрагмента в непрямоугольную область с соответствующим геометрическим искажением.

В ряде случаев формирование всего изображения заново может быть слишком длительным — например, различного рода анимация или изобра­жения из очень большого числа элементов. В этом случае эффективно использование «теневых» контекстов или «контекстов в памяти». Это такие DC, которые не имеют связи с реальным устройством. Вместо него рабочую поверхность для них образует битовая карта (bitmap) или метафайл. (Под метафайлом здесь понимается объект Metafile, фактически хранящий последо­вательность применявшихся к нему графических примитивов и способный их воспроизвести.)

«Теневой» контекст создается совместимым с текущим экранным режимом, и с ним ассоциируется «битовая карта»:

hShadowDC = CreateCompatibleDC(NULL);

hBitmap = CreateCompatibleBitmap(hPrimDC, width, height);

SelectObject(hShadowDC, hBitmap);

Здесь hPrimeDC — «реальный» контекст, в котором необходимо формировать изображение.

После создания «теневого» контекста в нем формируется необходимое изображение. Далее в процессе работы программы это изображение или его фрагменты переносятся на «основной» (видимый) контекст.

Контрольные вопросы

1) Использование таймера.

2) Теневые графические контексты.

3) Формат BMP файла.

4) Отображение BMP картинки.

5) Анимация движения.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: