新建工程後, 在窗體上分別添加: 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.