文档章节

Delphi 与 DirectX 之 DelphiX(5): 初识 TDXImageList

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 458
阅读 8
收藏 0

新建工程后, 在窗体上分别添加: DXDraw1、DXImageList1;

然后只需要下面四行代码即可在 DXDraw1 中显示 DelphiX.dxg 图像:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DXImageList1.Items.LoadFromFile('C:\Temp\DelphiX.dxg');
  DXImageList1.DXDraw := DXDraw1;
  DXImageList1.Items[0].Draw(DXDraw1.Surface, 10, 10, 0);
  DXDraw1.Flip;
end;

 
 
 
 
 

 

 

  

你如果没有 dxg 格式的图像, 就下载本例用到的图像吧(下载后解压到 C:\Temp\):
http://files.cnblogs.com/del/DelphiX_img.rar

DXImageList1 是一个图像列表, 本来用 LoadFromFile 添加很方便, 但现在这个命令很不好用;
不过没关系, 还有其他办法建立图像列表:
1、设计时双击 DXImageList1 图标...这种方法也不好, 目前只支持 dxg 和部分 bmp(dib我没试);
2、从 DXImageList1 双击其 items 属性...这种方法好, 支持很多种格式;
3、TDXImageList 总归还是 VCL 控件吗, 它可以和其他 VCL 交互; 只要其他控件能加载的图片它都可以拿来用.

下面的例子是用第二种办法添加了两个图片, 运行效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DXDraws, DXClass;

type
  TForm1 = class(TForm)
    DXDraw1: TDXDraw;
    DXImageList1: TDXImageList;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{把 DXImageList1 的 DXDraw 属性指定为 DXDraw1}
procedure TForm1.FormCreate(Sender: TObject);
begin
  DXImageList1.DXDraw := DXDraw1; {这一步容易忽视; 也可以在设计时指定}
end;

{显示列表中的第一个图像}
procedure TForm1.Button1Click(Sender: TObject);
begin
  {Draw 函数的参数 1 是绘图表面}
  {参数 2、3 是坐标}
  {参数 4 用来指定使用第几个调色板, 现在默认只有一个调色板, 只能是 0}
  DXImageList1.Items[0].Draw(DXDraw1.Surface, 10, 10, 0);
  DXDraw1.Flip;
end;

{显示列表中的第二个图像}
procedure TForm1.Button2Click(Sender: TObject);
begin
  DXImageList1.Items[1].Draw(DXDraw1.Surface, 10, 10, 0);
  DXDraw1.Flip;
end;

end.

 
 
 
 
 

 

 

  

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

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

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

蓬莱仙羽
2014/06/21
0
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:...

anonymous_007
2014/05/28
1K
2
开源游戏框架(转至wiki)

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

Matrix4X4
2012/04/17
1K
0
DirectX—昨天,今天,明天[1]

DirectX—昨天,今天,明天[1] [原创] 龙芯X 2004-01-19 现在游戏的种类与数量几乎呈爆炸式增长,游戏的制作水平也不断提高,那么玩家在欣赏游戏中那绚丽的效果时,有没有想过是什么造就了这一...

晨曦之光
2012/03/09
0
0
android学习---初识android

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

alex
2016/04/07
45
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.4部署Zabbix4.0

环境搭建 在CenOS7.4里面部署Zabbix最好先搭建好环境,我这里使用的是PHP+MariaDB+httpd部署的。 部署PHP环境: yum install -y php php-php-fpm 修改 PHP 参数以安装 ZABBIX 的安装需求: ...

寰宇01
22分钟前
2
0
工厂模式

(从别人里copy的,方便自己查看) 意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 主要解决:主要解决接口选择的问题。 何时使...

南桥北木
49分钟前
1
0
rabbitmq学习(一)

RabbitMQ是目前非常热门的一款消息中间件,具有高可靠、易拓展、高可用及丰富的功能 1.什么是消息中间件 消息是指在应用间传送的数据。包含文本字符串、JSON、内嵌对象 消息队列中间件(消息...

hensemlee
52分钟前
2
0
学习设计模式——原型模式

1. 认识原型模式 1. 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 2. 结构: Prototype:声明一个克隆自身的接口,用来约束想要克隆自己的具体实现类,要求这些类...

江左煤郎
58分钟前
1
0
观察者模式

观察者模式的套路 有如下角色: 事件,比如修改,用户点击; 事件队列,触发事件之后,会把事件一个一个放入事件队列 监听器,采用某种方式(一般是轮询,或者io阻塞机制),来判断事件队列是否有新的未...

黄威
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部