zoukankan      html  css  js  c++  java
  • Delphi 与 DirectX 之 DelphiX(4): 初识 TDXTimer


    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
    
  • 相关阅读:
    数据结构 队列
    数据结构 堆栈
    UNP学习 广播
    UNP学习 路由套接口
    QTcpSocket发送结构体
    线性表及实现
    [转]理解WSRF之一 使用WS-ResourceProperties (整理自IBM网站)
    详解x86、IA-32、IA-64等CPU系列
    gsoap框架下的onvif程序流程分析
    【LeetCode】从contest-21开始。(一般是10个contest写一篇文章)
  • 原文地址:https://www.cnblogs.com/del/p/1374361.html
Copyright © 2011-2022 走看看