Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Графика и Игры \ DirectX и DelphiX \ Как рисовать?

Автор: @lex
WEB-сайт: http://shimigon.narod.ru

Я думаю, что если вы решили создать собственную игру, то уже должны понимать основные моменты создания математического блока, осталось научиться выводить графику. Здесь я опишу самые элементарные вещи по отображению графики посредством DelphiX, без использования DxSpriteEngine и прочих примочек.

Итак! На форме из средств DelphiX нам понадобятся только:
DXDraw - экран для рисования
DXImageList - емкость для картинок
DXTimer - короче таймер
Обзовите все эти вещи как-нибудь покороче а затем слинкуйте DXImageList с DXDraw, выбрав в первом свойстве у DXImagelist имя вашего DXDraw.
Подробную информацию о настройках излагать не буду, так как эта статья написана для Delphi World , а там уже есть не одно подробное описание DelphiX.
В DXImageList можно добавлять изображения или же загружать из файлов в процессе работы программы.
Создать новое изображение в DXImageList можно так: DXImageList1.Items.Add - функция возвращает номер изображения.
Ему можно задать имя: DXImageList1.Items.Items[x].Name:='smth'; где х-номер изображения, а потом обращаться к нему "по имени": DXImageList1.Items.Find('smth')...
Или же по номеру: DXImageList1.Items.Items[x]...

Самая простая функция для отображения это: DXImageList1.Items.Items[x].Draw(DXDraw.surface,X,Y,PatternIndex)
Она позволяет только лишь отображать немасштабированные изображения на поверхности DXDraw
Гораздо более продвинутая функция это DXImageList1.Items.Items[x].DrawRotate(DXDraw.surface,X,Y,Width,Height,PatternIndex,CenterX,CenterY,Angle)
Пару слов о ее параметрах:
DXDraw.surface - ссылка на поверхность DXDraw
X,Y - Координаты для отображения (Integer)
Width,Height - Размеры изображения (для масштабирования, Integer)
PatternIndex - С этим честно говоря не разбирался, задание палитры, насколько я понимаю, ставьте 0 - не ошибетесь!
CenterX,CenterY - Ось вращения, 0.5,0.5 - центр изображения (Double)
Angle - угол поворота, но не совсем обычный. ПИ радиан равны 128 градусов по этой мере, а при увеличении значения, вращение идет по часовой стрелке.

Тепеть пару слов по синтаксису.
Где нибудь в начале (например OnFormCreate) пропишите инициализацию DXDraw: DXDraw1.Initialize;
Функцию отображения вызывается по таймеру DXTimer, интервал которого ставиться минимальным, тобиш 0.
Только не попадите в ловушку, если два раза кликнуть по нему, то откроется процедура OnActivate а не OnTimer :)
В функции отображения можно очистить старый кадр командой: DXDraw1.Surface.Fill(0); - заполняет экран черным цветом
Команда DXDraw1.flip; прописывается в конце функции и выводит отрисованый кадр на экран.

На этом теория заканчивается, и начинается практика. Посмотрите мой пример. Он неплохо закомментирован и поможет понять некоторые моменты работы с графикой. Сделаю одно замечание: при включении ручного управления, CheckBox должен оставаться выделенным, потому что обработка нажатий клавиш идет через него.
Проект Delphi World © Выпуск 2002 - 2005
Автор проекта: ___Nikolay