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