經過前幾篇嘗試,確認設計時雙擊 Items 屬性頁面添加是最穩定、支援格式最多(BMP、JPG、PNG、GIF 等)的方法。本篇給出最終標準化代碼範例。
DXImageList1.Items 彈出集合編輯器Picture 屬性載入圖檔Items[索引].Draw(...)unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DXDraws, StdCtrls;
type
TForm1 = class(TForm)
DXDraw1: TDXDraw;
DXImageList1: TDXImageList;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
end;
var Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
const
Img1 = 'C:\Temp\DelphiX.bmp';
Img2 = 'C:\Temp\DelphiX.jpg';
var PicItem: TPictureCollectionItem;
begin
DXImageList1.DXDraw := DXDraw1; // 關鍵:指定繪圖目標
// 設計時已加載兩張圖,這裡僅示範運行時動態加載備選方案
{
DXImageList1.Items.Add;
PicItem := DXImageList1.Items[DXImageList1.Items.Count-1];
PicItem.Picture.LoadFromFile(Img1);
DXImageList1.Items.Add;
PicItem := DXImageList1.Items[DXImageList1.Items.Count-1];
PicItem.Picture.LoadFromFile(Img2);
}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with DXImageList1 do
begin
Items[0].Draw(DXDraw.Surface, 0, 0, 0); // 第 1 張圖 (0,0)
Items[1].Draw(DXDraw.Surface, 0, Items[0].Height, 0); // 第 2 張圖緊接在下方
DXDraw.Flip;
end;
end;
end.

| 屬性/方法 | 說明 |
|---|---|
| DXImageList.DXDraw | 指定繪圖目標 TDXDraw,設計時可綁定 |
| DXImageList.Items | TPictureCollection 集合,含多個 TPictureCollectionItem |
| TPictureCollectionItem.Picture | TPicture 相容物件,支援 LoadFromFile/Assign 等 |
| TPictureCollectionItem.Draw(Surface, X, Y, PaletteIndex) | 繪製到指定 Surface,PaletteIndex 通常為 0 |
| TDXDraw.Flip | 前後緩衝交換,顯示繪圖結果 |
ExtractFilePath(Application.ExeName) + 'Res\Img.bmp' 相對路徑。TPicture.LoadFromFile 依賴系統註冊的圖形過濾器。TPictureCollectionItem.Transparent / TransparentColor 控制透明繪製。procedure CreateImageListAtRuntime;
var i: Integer; PicItem: TPictureCollectionItem;
begin
for i := 1 to 10 do
begin
DXImageList1.Items.Add;
PicItem := DXImageList1.Items[DXImageList1.Items.Count-1];
PicItem.Picture.LoadFromFile(Format('C:\Res\Frame%d.bmp', [i]));
PicItem.Transparent := True;
PicItem.TransparentColor := clWhite;
end;
end;