文档章节

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: articlelist.jsp {"results":"100","rows":[{"id":"1"......

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

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

Matrix4X4
2012/04/17
1K
0
转Elasticsearch顶尖高手系列课程

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

小花卷juan
2017/06/24
124
0
【备忘】阿里云云主机安装centos从入门到使用视频

百度网盘下载1-1 ECS&Centos7导学.mp41-2 ECS基础介绍.mp41-3 ECS云服务逻辑架构.mp41-4 阿里云管理控制台使用.mp42-1 ECS云服务构建.mp42-2 阿里云节点BGP和专线概念介绍.mp42-3 ECS如何按照...

javail
11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
14
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
7
0
my.ini

1

architect刘源源
今天
9
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
10
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部