Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  159

•  TDictionary Custom Sort  3 336

•  Fast Watermark Sources  3 087

•  3D Designer  4 846

•  Sik Screen Capture  3 340

•  Patch Maker  3 552

•  Айболит (remote control)  3 657

•  ListBox Drag & Drop  3 014

•  Доска для игры Реверси  81 692

•  Графические эффекты  3 944

•  Рисование по маске  3 248

•  Перетаскивание изображений  2 628

•  Canvas Drawing  2 751

•  Рисование Луны  2 579

•  Поворот изображения  2 188

•  Рисование стержней  2 168

•  Paint on Shape  1 568

•  Генератор кроссвордов  2 235

•  Головоломка Paletto  1 767

•  Теорема Монжа об окружностях  2 229

•  Пазл Numbrix  1 685

•  Заборы и коммивояжеры  2 057

•  Игра HIP  1 282

•  Игра Go (Го)  1 230

•  Симулятор лифта  1 475

•  Программа укладки плитки  1 216

•  Генератор лабиринта  1 548

•  Проверка числового ввода  1 365

•  HEX View  1 497

•  Физический маятник  1 358

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Ввыводим текст и графику, используя DelphiX



Встречаются два квакера.
- Hу как жизнь?
- Да так, процентов на тридцать.

Итак, цель нашего первого урока - вывести текст и графику. Сначала определимся, куда же пихать эти самые текст и графику. Сначала поставьте на форму 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




Похожие по теме исходники

Image2Text (изображение в текст)

Генератор текстур

TextureGen (генератор текстур)

Текст Drag & Drop

 

Текст по синусоиде

Текст внутри файла

Зеркальный текст

Tetris DelphiX

 



Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте