Delphi 与 DirectX 之 DelphiX(4): 初识 TDXTimer


DelphiX 提供了高性能的计时器 TDXTimer, 使用方法和 Timer 基本一样.

我们在使用 Timer 时, 很少把 Interval 设为 50 以下(这应该是它精确度的极限);
使用 TDXTimer 可以把 Interval 置为 0, 表示尽可能地快!

本例效果图:

Delphi 与 DirectX 之 DelphiX(4): 初识 TDXTimer

代码文件:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DXClass, DXDraws, ComCtrls;



type

  TForm1 = class(TForm)

    DXDraw1: TDXDraw;

    DXTimer1: TDXTimer;

    TrackBar1: TTrackBar;

    procedure FormCreate(Sender: TObject);

    procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);

    procedure TrackBar1Change(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);

begin

  DXDraw1.Align := alClient;

  TrackBar1.Align := alBottom;

  TrackBar1.Height := 23;

  TrackBar1.ShowSelRange := False;

  TrackBar1.Min := 0;

  TrackBar1.Max := 500;

  TrackBar1.Position := TrackBar1.Max div 2;



  DXTimer1.Interval := TrackBar1.Position;

  Randomize;

end;



procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);

var

  x1,y1,x2,y2: Integer;

begin

  {随机位置}

  x1 := Random(DXDraw1.Width);

  y1 := Random(DXDraw1.Height);

  x2 := Random(DXDraw1.Width);

  y2 := Random(DXDraw1.Height);



  DXDraw1.Surface.Fill(0);

  with DXDraw1.Surface.Canvas do begin

    Brush.Color := Random($FFFFFF); {随机颜色}

    Ellipse(x1, y1, x2, y2);

    Release;

  end;

  DXDraw1.Flip;

end;



procedure TForm1.TrackBar1Change(Sender: TObject);

begin

  DXTimer1.Interval := TrackBar1.Position;

end;



end.


 
   

窗体文件:

object Form1: TForm1

  Left = 0

  Top = 0

  Caption = 'Form1'

  ClientHeight = 206

  ClientWidth = 339

  Color = clBtnFace

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

  Font.Name = 'Tahoma'

  Font.Style = []

  OldCreateOrder = False

  OnCreate = FormCreate

  PixelsPerInch = 96

  TextHeight = 13

  object DXDraw1: TDXDraw

    Left = 24

    Top = 24

    Width = 100

    Height = 100

    AutoInitialize = True

    AutoSize = True

    Color = clBlack

    Display.FixedBitCount = False

    Display.FixedRatio = True

    Display.FixedSize = True

    Options = [doAllowReboot, doWaitVBlank, doCenter, do3D, doDirectX7Mode, doHardware, doSelectDriver]

    SurfaceHeight = 100

    SurfaceWidth = 100

    TabOrder = 0

    Traces = <>

  end

  object TrackBar1: TTrackBar

    Left = 96

    Top = 144

    Width = 150

    Height = 28

    TabOrder = 1

    OnChange = TrackBar1Change

  end

  object DXTimer1: TDXTimer

    ActiveOnly = True

    Enabled = True

    Interval = 1000

    OnTimer = DXTimer1Timer

    Left = 144

    Top = 24

  end

end


 
   

你可能感兴趣的:(Delphi)