div.main {margin-left: 20pt; margin-right: 20pt}
Учим DelphiX
Первая Часть
Приветствую, ученик. Ты наверное не раз писал какие-нибудь игрульки на Delphi. Что тебе мешало, если в игре было слишком много графики или игровое поле было огромных размеров? Правильно — тормоза, не те, что в голове, а те, что заставляют игру быть медленнее, чем ты хотел. Есть несколько способов от этого избавиться. Первый — вырезать все излишки графики. Второй — получить доступ к видео памяти, но это у тебя не получится. Третий — использовать Delphi X, который сделает все за тебя. Тебе лишь останется писать игру, как с обычным canvas'ом. Как установить? Легко. Качаете арихив с сайта Мир Delphi в разделе компоненты/DelphiX. Распаковываете его. Запускаете Delphi. Далее выбираете «Components/add pacages» и добавляете DelphiX. Все готово для работы, приступим.
Вторая часть
Создаем новое приложение, как показанно на рисунке.
Сворачиваем форму (Form1) и делаем следующие изменения:
Как было:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
Как надо:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DXClass;
type
TForm1 = class(TDXForm)
private
{ Private declarations }
public
{ Public declarations }
end;
Это поможет нам избезать ошибок, которые могут возникнуть при работе компонентов DelphiX с TForm. Теперь создадим поле для рисования. Это компонент DXDraw. Находим его, как на рисунке.
Ставим его на форму. Размером 640х480 или как вам больше нравится. Меняем свойство Align на AlClient, Deisplay.BitCount с 8 на 16 или 32. И там же мтавим наше разрешение в пунктах Height = 640, Width = 480. Изменим имя (name) на DXDraw без 1. Вот как все должно быть:
Чтобы изображение кажбый раз менялось ставим DXTimer. Вот он:
Ставим параметр Interval на 0, а enabled на false. Теперь изменим события (Events) DXDraw. OnInitialize: пишем там
DXTimer1.Enabled := True; //включаем таймер
А в событии OnFinalize пишем
DXTimer1.Enabled := false; //выключаем таймер
Теперь переходим непосредственно к отрисовке. В событии DXTimer'а — OnTime пишем
if not DXDraw.CanDraw then exit; // Если система не может найти DirectX, то выходим
DXDraw.Surface.Fill(0); // Заполняем все черным, т.е. очищаем экран
Здесь мы можем рисовать линии, точки и т.д. а так же выводить текст.
with DXDraw.Surface.Canvas do // на канве DXDraw делаем чего — нить
begin
Brush.Style := bsClear; // Задаем стиль кисти
Font.Color := clWhite; // Цвет текста — белый
Font.Size := 30; // Размер шрифта
Textout(30, 30, 'Hello World'); // Выводим легендарную фразу
Release; // реализуем
end; // заканчиваем работу с поверхностью
DXDraw.Flip; // «тик» DDraw
Теперь сделаем быстрый выход из программы и переход в полноэкранный режим.
У формы изменяем свойство KeyPreview на true. В событии формы OnKeyDown пишем:
Выход из программы
if Key=VK_ESCAPE then
Close;
Меняем режим экрана по Alt+Enter
if (ssAlt in Shift) and (Key=VK_RETURN) then
begin
DXDraw.Finalize;
if doFullScreen in DXDraw.Options then
begin
RestoreWindow;
DXDraw.Cursor := crDefault;
BorderStyle := bsSizeable;
DXDraw.Options := DXDraw.Options — [doFullScreen];
end else
begin
StoreWindow;
DXDraw.Cursor := crNone;
BorderStyle := bsNone;
DXDraw.Options := DXDraw.Options + [doFullScreen];
end;
DXDraw.Initialize;
end;
Вот и все. Мы создали бланк приложений с DelphiX. Сохраните и создайте резервную копию.
Эту и другие статьи по программированию на Delphi вы можете найти на сайте Мир Delphi.
Автор: Zaluskiy Anton
|