首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi與DirectX之DelphiX(7):TDXImageList 載入圖片最終方案

     編輯:Delphi

TDXImageList 載入圖片的最佳實踐

經過前幾篇嘗試,確認設計時雙擊 Items 屬性頁面添加是最穩定、支援格式最多(BMP、JPG、PNG、GIF 等)的方法。本篇給出最終標準化代碼範例。

核心步驟

  1. 設計時雙擊 DXImageList1.Items 彈出集合編輯器
  2. 點擊「新增」按鈕,在 Picture 屬性載入圖檔
  3. 重複添加多張圖片,自動形成索引 0, 1, 2...
  4. 運行時代碼直接使用 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.ItemsTPictureCollection 集合,含多個 TPictureCollectionItem
TPictureCollectionItem.PictureTPicture 相容物件,支援 LoadFromFile/Assign 等
TPictureCollectionItem.Draw(Surface, X, Y, PaletteIndex)繪製到指定 Surface,PaletteIndex 通常為 0
TDXDraw.Flip前後緩衝交換,顯示繪圖結果

常見坑點避雷

  • 忘記設定 DXDraw 屬性:運行時繪圖會無效或報錯。
  • LoadFromFile 路徑錯誤:建議使用 ExtractFilePath(Application.ExeName) + 'Res\Img.bmp' 相對路徑。
  • 圖片格式不支援:設計時 Items 編輯器支援最廣;運行時 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;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved