Первая анимация
Xakep, номер #045, стр. 045-063-3 value:=B or (G shl 5) or (R shl 11); (G shl 5) - сдвигаем переменную G на пять бит влево; (R shl 11) - сдвигаем R на 11 бит влево. Результаты складываются между собой и переменной B с помощью операции логического сложения or. Прямая запись в видеопамять Теперь о том, как записывать в память. Чтобы записать значение цвета в левый верхний угол, нужно присвоить его по адресу, указанному в desc.lpSurface, то есть вот сюда - PWord(Integer(desc.lpSurface))^ . Я привожу указатель к типу PWord, потому что записывать буду значение типа Word. Если бы я записывал только байт, то приводил бы к PByte - PByte(Integer(desc.lpSurface))^ . Чтобы вычислить строку, в которую надо записать, я умножаю значение Y на длину строки - Y * desc.lPitch. В desc.lPitch как раз и находится длина строки картинки. Чтобы вычислить Х позицию, я умножаю Х на 2, потому что каждое значение Х позиции состоит из 2 байт. Ну и, наконец, в этой процедуре FImageSurface - это поверхность типа IDirectDrawSurface7, в которую я загружу картинку. Именно эту поверхность я блокирую и получаю к ней доступ. Disconnect Я считаю, что с появлением диска журнал получил второе дыхание. Я каждый месяц совместно с редактором стараюсь найти что-то интересное и полезное для любого кодера и разместить на диске. Помимо этого я выкладываю и исходники примеров для тех, у кого проблемы с Инетом. Сегодня я не буду рассматривать в статье пример, чтобы не загружать лишнее место, а просто выложу его на диск с подробными комментариями и дополнительной информацией/описанием. Ну а те, кому не достанется журнал с диском, могут всегда обратиться на мой сайт www.cydsoft.com/vr-online и найти все необходимое в разделе "Хакер". Удачи!!! P.S.У меня к тебе просьба, на сто баксов :). Не пиши мне большие письма. После появления рубрики "Кодинг" меня каждый день валят вопросами. Я не в состоянии всем рассказывать то, о чем пишут книги. Я могу что-то подсказать, где-то помочь, но не больше. А просьбы типа помоги написать прогу вообще нереальны. Я отвечаю только на те вопросы, где ответ займет несколько строчек. Целые лекции по мылу я разводить не могу. Я бы с удовольствием помог всем, но это НЕВОЗМОЖНО. Вас слишком много, а я один :(((. Поэтому лучше разбей свой вопрос на несколько маленьких и спрашивай постепенно, а не все сразу. Ты спрашивал <???>Извините меня за беспокойство, но у меня есть к Вам один вопрос. Вот Вы написали статью про простой сканер ресурсов на Delphi, а не могли бы Вы помочь мне его разработать на C++ Builder 5.0, просто очень надо. Н: Во-первых, прошу всех называть меня на ТЫ, я еще слишком молод :). Во-вторых, не надо извиняться, я всегда готов помочь в ответе на небольшие письма. Ну а теперь собственно сам ответ: C++ Builder и Delphi это практически одно и то же. В обоих используется одна библиотека VCL, и C++ Builder даже понимает и умеет компилировать код Delphi. А перенос не так сложен, пиши то же самое, просто что и в моих примерах, только заменяй: |