|

Программирование графики
Xakep, номер #043, стр. 043-066-3
Чтобы заполнить структуру значениями, нужно выполнить следующий код:
srcrect:=Rect(0,0,180,90);
Здесь выполняется функция Rect у которой есть четыре параметра: левая, верхняя, правая и нижняя позиции, необходимые для структуры. Результат выполнения этой функции - проинициализированная структура, которая записывается в нашу переменную srcrect.
Восстановление поверхности
Не забудь, что если программа потеряла фокус, то все поверхности нужно восстанавливать. Наша прозрачная поверхность не исключение, так что найди тот код, где мы реанимируем программу, и подкорректируй его так:
if hRet = DDERR_SURFACELOST then
begin
FPrimarySurface._Restore;
FImageSurface._Restore;
FTransImageSurface._Restore;
FPrimarySurface.Blt(nil, nil, nil, DDBLT_COLORFILL or DDBLT_WAIT, @bltfx);
FImageSurface := DDLoadBitmap(FDirectDraw, '1.bmp', 0, 0);
FTransImageSurface := DDLoadBitmap(FDirectDraw, '2.bmp', 0, 0);
DDSetColorKey(FTransImageSurface, RGB(255, 0, 255));
end;
В случае нарушения поверхностей последние две строки этого кода снова загрузят графический файл и заново установят цвет прозрачности.
Shutdown
Результат работы проги ты можешь увидеть на рисунке 3. Как видишь, на этом скрине рисунок 2 нарисован поверх рисунка 1, при этом цвет фона самолета отсутствует.
А на сегодня отведенное мне место уже заканчивается, а в следующий раз я создам первую анимацию. А именно - наш самолет научится летать и вертеться в воздухе. Таким вот способом мы медленно, но верно доберемся до вершины графического мастерства.
Исходники примера, как всегда, можно скачать с моего сайта www.cydsoft.com/vr-online после выхода этого номера в свет или поищи на диске.
P.S. У меня к тебе просьба, на сто баксов :). Не пиши мне большие письма. После появления рубрики "Кодинг" меня каждый день валят вопросами. Я не в состоянии всем рассказывать то, о чем пишут книги. Я могу что-то подсказать, где-то помочь, но не больше. А просьбы типа помоги написать прогу вообще нереальны. Я отвечаю только на те вопросы, где ответ займет несколько строчек. Целые лекции по мылу я разводить не могу. Я бы с удовольствием помог всем, но это НЕВОЗМОЖНО. Вас слишком много, а я один :(((. Поэтому лучше разбей свой вопрос на несколько маленьких и спрашивай постепенно, а не все сразу.
Назад на стр. 043-066-2 Содержание
|