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

DelphiX 入門(5):TDXImageList 圖片清單載入與繪製

     編輯:Delphi

前言

TDXImageList 是 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;

三種建立圖片清單方式

  1. 執行期 LoadFromFile:僅支援 .dxg 及部分 .bmp,相容性較差。
  2. 設計時雙擊 Items 屬性:推薦,支援 BMP、JPG、PNG、GIF 等多種格式,自動轉換為內部格式。
  3. 與 VCL 互動:TDXImageList 繼承自 TComponent,可從 TImage、TBitmap 複製圖片。

完整範例:雙圖片切換顯示

DXImageList 切換圖片

單元程式碼

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;  { 顯示第 0 張 }
    Button2: TButton;  { 顯示第 1 張 }
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DXImageList1.DXDraw := DXDraw1;  { 關鍵:指定繪圖目標 }
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  { Draw(目標表面, X, Y, 調色盤索引) }
  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.

測試圖片下載

若無 .dxg 檔案,可下載範例素材:
https://files.cnblogs.com/del/DelphiX_img.rar
解壓至 C:\Temp\ 即可直接執行。

關鍵提醒

  • DXImageList1.DXDraw := DXDraw1 必須在 FormCreate 或設計時設定,否則 Draw 會因無目標表面而無效果。
  • Flip 將後台 Surface 內容翻轉到前台 Primary,實現雙緩衝無閃爍繪圖。
  • 調色盤索引參數(第 4 參數)目前預設僅支援 0(單一調色盤)。

結語

TDXImageList 讓 DelphiX 專案像使用 TImageList 一樣管理遊戲素材。善用設計時編輯器匯入多格式圖片,配合 Items[Index].Draw 即可高效完成 2D 遊戲繪圖需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved