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