Итак, цель нашего первого урока - вывести текст и графику. Сначала
определимся, куда же пихать эти самые текст и графику. Сначала поставьте на
форму DXDraw, при этом в свойствах, в разделе "Options" измените "doFullScreen"
и "doFlip" на "True", чтобы при запуске программа заполняла весь экран.
Запустите и проверьте. Если вы видите черный экран, все нормально. Выходить
придется Ctrl-Alt-Del'ом, так как процедуры выхода из программы мы еще не
написали. "Рабочий стол" готов.
Теперь нарисуйте какую-нибудь картинку, по размерам экрана. Я возьму
"Космос"( черный экран и белые точки, рисуется распылителем в Paint'e),
сохраняем, как "cosmos.bmp". Вроде этого:
Теперь нарисуем то, что должно будет двинаться по "космосу" в следующих
уроках, а пока это самое будет просто отображаться. Я опять же нарисую в Paint'у
летающую тарелку(жирный овал,"tarelka.bmp"), вроде этого:
Копируем эти рисунки, в папку с Дельфи-проектом. Ставим на форму
DXSpriteEngine и DXImageList. Выбираем в их свойстве "DXDraw" "DXDraw1", уже
сконфигурированный нами в предыдущем абзаце. В свойствах Имаг-листа(DXImageList)
выбираем "Items". В раскрывшемся окне создаем два объекта, назовем их "cosmos" и
"tarelka", в свойстве "Picture" укажем путь к "cosmos.bmp" и "tarelka.bmp"
соответственно.
Теперь самое сложное: поскольку ДельфИкс создавал какой-то, хоть и очень
умный, но один человек, а не корпорация, нам придется ВРУЧНУЮ прописывать класс
спрайтов(рисунков). Открываем редактор кода, в части "Implementation", после
"Var" пишем "type" и с новой строчки:
TCosmos = class(TImageSprite) public constructor Create(AParent: TSprite); override; end;
TTarelka = class(TImageSprite) public constructor Create(AParent: TSprite); override; end;
|
Разбираемся: "Tcosmos" - имя будущего класса, "Class(TImageSprite)" -
указывает, что будущий класс относится к ImageSprite'ам, "Public" - указывает,
что следующий раздел глобальный, "Constructor" - указывает, что следующая
процедура относится к подклассу конструкторов, "Create(AParent: TSprite);
Override;" - надо заучить как молитву, т.к. эта процедурка будет создавать ВСЕ
спрайты в ваших программах, "End;" обозначает, что описание класса завершено.
Но процедуры мало Описать, их надо ещё и ПРОписать. В этом же разделе, после
описания всех классов, пишем:
constructor Tcosmos.Create(AParent: TSprite); begin inherited Create(AParent); Image := Form1.ImageList1.Items.Find('cosmos'); X := x; Y := x; Z := z; Width := Image.Width; Height := Image.Height; PixelCheck := True; end;
|
Учить точно так же, как и описание этого самого конструктора. Изменятся будут
только подчеркнутые элементы. "Form1.ImageList1.Items.Find('cosmos')" - путь к
спрайту "cosmos", меняться будут толко имена спрайтов. "x" - координата по
горизонтали, у всех фоновых рисунков равна единице. "y" - координата по
вертикали, у всех фоновых рисунков также равна единице. "z" - глубина рисунка,
при наслоении двух спрайтов отображается тот, у которого "z" больше, у всех
фоновых рисунков равна минус единице. Также пишем и тарелку:
constructor Ttarelka.Create(AParent: TSprite); begin inherited Create(AParent); Image := Form1.ImageList1.Items.Find('tarelka'); X := 50; Y := 50; Z := 1; Width := Image.Width; Height := Image.Height; PixelCheck := True; end;
|
Как видите, изменилась только подчеркнутая часть. Итак, описания закончены.
Теперь перейдем непосредственно к выводу на экран. Создаем DXTimer, в событие
onTimer пишем:
if not DXDraw.CanDraw then exit; DXDraw.Surface.Fill(0); SpriteEngine.Move(1000 div 10); SpriteEngine.Dead; SpriteEngine.Draw;
with DXDraw.Surface.Canvas do begin Brush.Style := bsClear; Font.Color := clWhite; Font.Size := 8; Textout(20, 3, 'Так выводится текст под ДельфИкс); Release; End;
DXDraw.Flip;
|
Разбираем: а разбирать тут и нечего, учить надо, это процедура инициализации
DirectX! Второй абзац - процедура вывода текста, последняя строка отрисовывает
все объекты. Теперь смотрив события формы и создаем обработчик события onCreate.
Пишем:
Ttarelka.create(SpriteEngine.Engine); Tcosmos.create(SpriteEngine.Engine);
|
Запускаем, и видим тарелку на звездном фоне!
Если не видим, то тут три возможности:
- обратиться к офтальмологу
- включить монитор
- проверить формат рисунков: ДельфИкс поддерживает только .bmp и .dib, если у
вас рисунок другого формата, нужно пойти на хитрость: в Picture Editor'e надо
сначала нажать "copy", а потом "paste", тогда оба рисунка сконвертируются в
формат .bmp
|