http://seprize.narod.ru |
|
Цветовой ключ.
При работе с DirectX, а здесь я пока рассматриваю только работу с DirectDraw, есть одна особенность. DirectDraw предназначен для работы растровыми изображениями, для быстрой их смене. Работу DirectDraw можно представить следующим образом: на экран очень быстро выводятся прямоугольные картинки (блоки) с заранее подготовленным изображением. Тут нет никаких фигур типа круг, овал, линия. Все это отсутствует, хотя вы можете создать функции, которые их создают. Стандартно же эти функции отсутствуют. Тогда,
наверное, у Вас возникнет резонный вопрос, все мы прекрасно видели, когда в
играх используются объекты совершенно не квадратной формы. Как же поступают
в тех случаях, когда нам необходимо вывести на экран круг. Можно просто
взять готовый круг из файла, например такой. Цветовой ключ – это такой механизм, когда мы хотим сделать один из цветов на нашей поверхности прозрачным, то мы используем определенную комбинацию флагов, в которой указываем этот цвет. Обычно используют цвета контрастные к изображению. Так если мы имеем яркую картинку, то можно использовать черный цвет, и наоборот. То есть используется такой цвет, который не используется в вашей картинке. Но картинок может быть в вашей программе много, даже очень много. Мой Вам совет заранее подумать над цветовым ключом в вашем приложении, тогда вы избежите большого количества проблем с запоминанием, где какой ключ используется. Сразу представьте финальную картинку в работе своего приложения. Если это будет мрачная картина в темных тонах, то вряд ли Вам придется в ней использовать розовый или лиловый. Для использования функции цветового ключа его необходимо сначала задать. Это делается после создания поверхности, с помощью вспомогательной функции модуля DDUtil
DDSetColorKey – сама функция задания ключа, у нее есть два аргумента это FDDSImage – естественно любая переменная типа IDirectDrawSurface7, содержащая растровое изображение Второй параметр это целое число. В данном случае используется функция, которая преобразует три представления цвета в одно число. Эта функция делает программу более удобной для чтения.
Далее в программе, когда вы решите использовать вывод растрового изображения с использованием цветового ключа, Вам необходимо применить вместо функцию блиттинга с дополнительными флагами.
FDDSPrimary.BltFast (X, Y, FDDSImage, nil, DDBLTFAST_WAIT, DDBLTFAST_SRCCOLORKEY)
,где X и Y – координаты вывода изображения на экран. FDDSImage - естественно любая переменная типа IDirectDrawSurface7, содержащая растровое изображение Параметр nil определяет, что выводится все изображение полностью. Флаг DDBLTFAST_SRCCOLORKEY именно указывает на необходимость использования функции работы со световым ключом растрового изображения, которое копируем, если бы стоял флаг DDBLTFAST_DESTCOLORKEY, то использовался бы цветовой ключ поверхности, на которую копируем, иногда это бывает полезно.
Ссылки
|
|
Если вы используете материалы с данного сайта, то сообщите
владельцу по почте |
© Сайт открылся 04.09.2002 Дата последнего обновления 02.11.2002 |