文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 346
阅读 16
收藏 0

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

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/01/12/1374361.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
[OpenGL]环境搭建以及OpenGL初识

想往游戏行业发展的话,经常被提及到的就是OpenGL和DirectX,这两者听起来感觉是一门挺高深的技术,今天我也开始摸索学习OpenGL,那么OpenGL到底是什么?它和DirectX有什么区别和联系? Open...

蓬莱仙羽
2014/06/21
0
0
开源游戏框架(转至wiki)

免费和开源引擎,转载自维基 Agar - 一个高级图形应用程序框架,用于2D和3D游戏。 Allegro - 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。 Axiom 引擎 ...

Matrix4X4
2012/04/17
1K
0
Ext.Error: Unable to parse the JSON returned by the server: You're trying to decode an invalid JSON String

Firefox给出的错误 Ext.Error: Unable to parse the JSON returned by the server: You're trying to decode an invalid JSON String: articlelist.jsp {"results":"100","rows":[{"id":"1"......

anonymous_007
2014/05/28
2.2K
2
转Elasticsearch顶尖高手系列课程

Elasticsearch,是目前行业中非常热门的一个技术。Elasticsearch是一种分布式的海量数据搜索与分析的技术,可以用于电商网站、门户网站、企业IT系统等各种场景下的搜索引擎,也可以用于对海量...

小花卷juan
2017/06/24
124
0
android学习---初识android

初识android 话说,写代码也有好长的时间了,从曾经的delphi,转入java swing写桌面应用;之后是jee;在移动端热火朝天的时候,却一直没有转入移动端的开发; 最近却有了很奇葩的想法,突发奇...

alex
2016/04/07
45
0

没有更多内容

加载失败,请刷新页面

加载更多

关于C++ 容器的swap操作

一、swap操作交换两个相同类型的容器的内容,一般的容器(除array外),交换两个容器内容的操作会保证非常快,因为并没有交换元素本身,而只是交换了两个容器的内部数据结构。 拿vector做个例...

shzwork
24分钟前
1
0
程序员从宏观、微观角度浅析JVM虚拟机!

1.问题 1、JAVA文本文件如何被翻译成CLASS二进制文件? 2、如何理解CLASS文件的组成结构? 3、虚拟机如何加载使用类文件的生命周期? 4、虚拟机系列诊断工具如何使用? 5、虚拟机内存淘汰机制?...

我最喜欢三大框架
24分钟前
2
0
Choerodon猪齿鱼实践之应用生命周期管理

Choerodon平台中的开发和部署都是围绕应用来进行的,那Choerodon平台中的应用有什么样的特性?又是怎样来进行管理的呢?本文旨在深入地介绍Choerodon平台中应用的功能特性及其生命周期的管理...

Choerodon
45分钟前
0
0
Websocket之Jmeter压力测试

最近使用到Websocket进行聊天功能开发,用Jmeter进行压力测试,记录下。 使用的Jmeter版本5.1.1,自行从apache jmeter官网下载。 首先要添加Websocket的插件,网上有很多,我从百度网盘下载的...

克虏伯
45分钟前
1
0
作为Java程序员这些技术都不会,拿什么去涨薪跳槽?

引言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~,缩减HC、裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀。但博...

别打我会飞
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部