UnDelphiX для Delphi 7

Достал из далёкого пыльного ящика свой старенький компьютер 2001г и нашел там оригинальную версию UnDelphiX. Самое интересное что на Delphi 7 Lite под Windows 10 компонентик ещё отлично работает. Собирается и даже рисует.

Оригинальная версия UnDelphiX

Возможно кто-то захочет сделать простую игрушку на стареньком DirectX 5.

В дополнение базовый пример как запустить Canvas, хотя насколько я помню намного проще было работать со Спрайтами. Та-же анимация делалась в три клика и 5 строчками кода. Советую заглянуть в папку Samples, там всё это есть.

unMain.pas
unit unMain;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes,
  Graphics, Controls, Forms, Dialogs, DXClass,
  DXDraws;
 
type
  TfmMain = class(TDXForm)
    dxDraw: TDXDraw;
    dxTimer: TDXTimer;
    procedure dxTimerTimer(Sender: TObject; LagCount: Integer);
    procedure FormCreate(Sender: TObject);
    procedure dxDrawInitialize(Sender: TObject);
    procedure dxDrawFinalize(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
  public
  end;
 
var fmMain: TfmMain;
 
implementation
 
{$R *.dfm}
 
  procedure TfmMain.dxTimerTimer(Sender: TObject; LagCount: Integer);
  begin
    if not dxDraw.CanDraw then Exit;
 
    DXDraw.Surface.Fill(0);
 
    with dxDraw.Surface.Canvas do
    try
      Brush.Style := bsClear;
      Font.Color := clWhite;
      Font.Size := 30;
      Textout(30, 30, DateTimeToStr(Now));
 
      TextOut(dxDraw.Surface.Width - 180, 30,
        Format('%d FPS', [dxTimer.FrameRate]));
    finally
      Release;
    end;
 
    dxDraw.Flip;
  end;
 
  procedure TfmMain.FormCreate(Sender: TObject);
  begin
    dxTimer.Interval := Round(1000 / 60);
  end;
 
  procedure TfmMain.dxDrawInitialize(Sender: TObject);
  begin
    dxTimer.Enabled := True;
  end;
 
  procedure TfmMain.dxDrawFinalize(Sender: TObject);
  begin
    dxTimer.Enabled := False;
  end;
 
  procedure TfmMain.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  begin
    if Key = VK_ESCAPE then Close;
 
    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;
  end;
 
end.
unMain.dfm
object fmMain: TfmMain
  Left = 192
  Top = 107
  Width = 544
  Height = 375
  Caption = 'UnDelphiX Canvas Basic'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnKeyUp = FormKeyUp
  PixelsPerInch = 96
  TextHeight = 13
  object dxDraw: TDXDraw
    Left = 0
    Top = 0
    Width = 536
    Height = 348
    AutoInitialize = True
    AutoSize = True
    Color = clBtnFace
    Display.FixedBitCount = True
    Display.FixedRatio = True
    Display.FixedSize = False
    Options = [doAllowReboot, doWaitVBlank, doCenter, doDirectX7Mode, doHardware, doSelectDriver]
    SurfaceHeight = 348
    SurfaceWidth = 536
    OnFinalize = dxDrawFinalize
    OnInitialize = dxDrawInitialize
    Align = alClient
    TabOrder = 0
  end
  object dxTimer: TDXTimer
    ActiveOnly = True
    Enabled = False
    Interval = 1000
    OnTimer = dxTimerTimer
    Left = 8
    Top = 16
  end
end