Delphi 与 DirectX 之 DelphiX(4): 初识 TDXTimer
2009-01-12 17:15
274 查看
DelphiX 提供了高性能的计时器 TDXTimer, 使用方法和 Timer 基本一样.
我们在使用 Timer 时, 很少把 Interval 设为 50 以下(这应该是它精确度的极限);
使用 TDXTimer 可以把 Interval 置为 0, 表示尽可能地快!
本例效果图:
![](http://images.cnblogs.com/cnblogs_com/del/171104/o_091122.gif)
代码文件:
窗体文件:
我们在使用 Timer 时, 很少把 Interval 设为 50 以下(这应该是它精确度的极限);
使用 TDXTimer 可以把 Interval 置为 0, 表示尽可能地快!
本例效果图:
![](http://images.cnblogs.com/cnblogs_com/del/171104/o_091122.gif)
代码文件:
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 与 DirectX 之 DelphiX(3): 初识 TDXDraw
- Delphi 与 DirectX 之 DelphiX(5): 初识 TDXImageList
- Delphi 与 DirectX 之 DelphiX(16): DXImageList1.Items.Find();
- Delphi 与 DirectX 之 DelphiX(19): 绘图表面(TDirectDrawSurface)如何加载图片
- Delphi 与 DirectX 之 DelphiX(30): TDIB.AddGradiantNoise();
- Delphi 与 DirectX 之 DelphiX(38): TDIB.Filter();
- Delphi 与 DirectX 之 DelphiX(44): TDIB.DoAddColorNoise();
- Delphi 与 DirectX 之 DelphiX(51): TDIB.DoDarkness();
- Delphi 与 DirectX 之 DelphiX(59): TDIB.DoSpotLight();
- Delphi 与 DirectX 之 DelphiX(69): TDIB.Greyscale();
- Delphi 与 DirectX 之 DelphiX(77): TDIB.Distort();
- Delphi 与 DirectX 之 DelphiX(82): TDIB.DrawMandelbrot();
- Delphi 与 DirectX 之 DelphiX(91): TDIB.DrawMono();
- Delphi 与 DirectX 之 DelphiX(9): 透明色与是否透明
- Delphi 与 DirectX 之 DelphiX(13): TPictureCollectionItem.DrawRotate
- Delphi 与 DirectX 之 DelphiX(17): TPictureCollectionItem.PatternWidth、PatternHeight
- Delphi 与 DirectX 之 DelphiX(31): TDIB.Twist();
- Delphi 与 DirectX 之 DelphiX(39): TDIB.Sharpen();
- Delphi 与 DirectX 之 DelphiX(45): TDIB.DoAddMonoNoise();
- Delphi 与 DirectX 之 DelphiX(52): TDIB.DoSaturation();