http://seprize.narod.ru

Цветовой ключ.

 

При работе с DirectX, а здесь я пока рассматриваю только работу с DirectDraw, есть одна особенность. DirectDraw предназначен для работы растровыми изображениями, для быстрой их смене. Работу DirectDraw можно представить следующим образом: на экран очень быстро выводятся прямоугольные картинки (блоки) с заранее подготовленным изображением. Тут нет никаких фигур типа круг, овал, линия. Все это отсутствует, хотя вы можете создать функции, которые их создают. Стандартно же эти функции отсутствуют.

Тогда, наверное, у Вас возникнет резонный вопрос, все мы прекрасно видели, когда в играх используются объекты совершенно не квадратной формы. Как же поступают в тех случаях, когда нам необходимо вывести на экран круг. Можно просто взять готовый круг из файла, например такой. По краям круга присутствуют черные поля. Я сделал их специально. Если вы будете выводить данный круг в вашем приложении на черном фоне, то будет все прекрасно. Но как быть, если Вы захотите изменить фон, скажем на белый цвет, что тогда брать еще одно изображение круга? Нет, вот тут Вам на помощь приходит использование цветового ключа.

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

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

Для использования функции цветового ключа его необходимо сначала задать. Это делается после создания поверхности, с помощью вспомогательной функции модуля DDUtil


DDSetColorKey (FDDSImage, RGB (0, 0, 0));

 

DDSetColorKey – сама функция задания ключа, у нее есть два аргумента это

FDDSImage – естественно любая переменная типа IDirectDrawSurface7, содержащая растровое изображение

Второй параметр это целое число. В данном случае используется функция, которая преобразует три представления цвета в одно число. Эта функция делает программу более удобной для чтения.

 

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

 

FDDSPrimary.BltFast (X, Y, FDDSImage, nil, DDBLTFAST_WAIT, DDBLTFAST_SRCCOLORKEY)

 

,где

X и Y – координаты вывода изображения на экран.

FDDSImage - естественно любая переменная типа IDirectDrawSurface7, содержащая растровое изображение

Параметр nil определяет, что выводится все изображение полностью.

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

 

Ссылки

Электронная почта автора  

 

. : навигация : .

главная
DirectX
уроки
словарь
гостевая книга
о проекте
 
.: DirectX :.
введение
уроки
файлы
 

статистика

RAMBLER'S TOP100

Если вы используете материалы с данного сайта, то сообщите владельцу по почте
и вставьте ссылку на этот сайт "seprize.narod.ru"
seprize@narod.ru

© Сайт открылся 04.09.2002     Дата последнего обновления 02.11.2002

Сайт управляется системой uCoz