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

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

Устранить перечисленные недостатки все-таки можно. Исчезновение заставки выполняется за ^тактов. При вызове функции вместо трех коэффициентов kR, kG, kB передается номер такта t, изменяющийся от 0 до N. Поскольку составляющая цвета не может иметь более 256 градаций яркости, то и значение Nb примерах ограничивается этим числом. Для формирования прозрачного фона цвет каждой точки заставки сравнивается с цветовым ключом (константой ColoKey) и при совпадении в обработанную картинку заносится фоновый цвет. Цвет остальных точек смешивается с цветом фона. Каждая цветовая составляющая точки с координатами i,j изменяется в функции от номера такта t, начального значения кода цвета Ctj (0) и соответствующей составляющей фонового цвета окна F по линейному закону:

c(/(O = Q(0) + (F-q/(0WN

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

Перечисленные выше переменные объявлены в файле BitmapTest.cpp. Кроме них для непосредственного доступа к графическим данным объявлена структура C0L0RP, описывающая точку растра в формате DIB и указатели pSO, pDO на начало графических данных исходного и обработанного изображений. В листинге 17.5 приведен код обновленной функции.

Листинг 17.5

typedef struct {

BYTE В: BYTE G: BYTE R: } *P.C0L0RP;

P pSO: //Адрес графических данных исходной картинки.


⇐ Предыдущая| |Следующая ⇒