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

  • A+
所属分类:[开发技巧]

新建工程后, 在窗体上分别添加: 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我测试过也可以. 而且通过双击图标,在item中不能添加dxg 格式. 只能用Items.LoadFromFile的办法.
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.

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
avatar
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: