您的位置:首页 > 编程语言 > Delphi

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

2009-01-12 17:15 274 查看
DelphiX 提供了高性能的计时器 TDXTimer, 使用方法和 Timer 基本一样.

我们在使用 Timer 时, 很少把 Interval 设为 50 以下(这应该是它精确度的极限);

使用 TDXTimer 可以把 Interval 置为 0, 表示尽可能地快!

本例效果图:



代码文件:
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: