Direct Draw по русски
К вопросу о прозрачности
Если у Вас все получилось, то вы наверное заметили, что наш якобы спрайт - не совсем правильно себя ведет. То есть отображается в виде квадрата. Как Вы наверное знаете вся суть спрайта заключается в прозрачности. Так называемом Альфа канале, или цвете. То есть из спрайта выделяется некоторый цвет, который пи отображении не рисуется, чем и создается эта самая прозрачность. Мы выберем в качестве прозрачного цвета - черный. Для определения прозрачного цвета существует тип записи PDDColorKey, который имеет в своей структуре две переменные, хранящие значения верхнего и нижнего индексов прозрачного цвета. dwColorSpaceLowValue
и dwColorSpaceHighValue соответственно. Записав в них нужные числа, мы исключим определенный цвет. Давайте Посмотрим, как будет выглядеть процедура RedrawScreen.
Сначала Определим переменную прозрачности.
var
. . . .
Alpha : PDDColorKey;
. . . .
begin
. . . .
Alpha.dwColorSpaceLowValue:=0;
Alpha.dwColorSpaceHighValue:=0;
SpriteSurface.SetColorKey(DDCKey_SRCBLT ,Alpha);
. . .
end.
Теперь поменяем флаг функции BltFast копирующей спрайтовое изображение.
было
DDResult:=SecondarySurface.BltFast(288,208,SpriteSurface,rect,DDBLTFAST_NOCOLORKEY+DDBLTFAST_WAIT);
стало
DDResult:=SecondarySurface.BltFast(288,208,SpriteSurface,rect,DDBLTFAST_SRCCOLORKEY +DDBLTFAST_WAIT);
Ну вот, кажется и все пока. :-)
|