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
    
  • 相关阅读:
    计算机网络笔记6-应用层
    计算机网络笔记5-传输层
    计算机网络笔记4-网络层
    计算机组成原理笔记7-输入输出系统
    计算机组成原理笔记6-总线
    计算机组成原理笔记5-中央处理器
    计算机网络笔记3-数据链路层
    计算机组成原理笔记4-指令系统
    计算机组成原理笔记3-存储系统
    信息安全数学基础笔记
  • 原文地址:https://www.cnblogs.com/del/p/1374361.html
Copyright © 2011-2022 走看看