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

  • A+
所属分类:[开发技巧]

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

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

本例效果图:

代码部分:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DXDraws, DXClass, ComCtrls;

type
TForm1 = class(TForm)
tdx: TDXTimer;
DXDraw1: TDXDraw;
TrackBar1: TTrackBar;
procedure FormCreate(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure tdxTimer(Sender: TObject; LagCount: Integer);
private
{ Private declarations }
public
{ Public declarations }
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;
//  TrackBar1.Position := 0;
tdx.Interval :=   TrackBar1.Position ;
Randomize;
end;

procedure TForm1.tdxTimer(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
tdx.Interval := TrackBar1.Position;
end;

end.

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
avatar
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: