新建工程后, 在窗体上分别添加: 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.