在 DelphiX 圖形程式開發中,TDIB.DoTile 方法提供了一種快速將位圖以平鋪方式填充繪圖區域的功能。這在製作遊戲背景、材質重複或介面裝飾時非常實用。本文將透過完整範例示範如何載入圖片並套用平鋪效果。
DoTile 方法屬於 TDIB 類別,其宣告為 procedure DoTile(TileCount: Integer)。參數 TileCount 指定圖片在水平與垂直方向的重複次數。呼叫後,原始 DIB 位圖會被重繪為由多個原圖拼貼而成的大圖,尺寸會隨之放大。
以下範例建立一個簡單的表單,包含一個 TDXPaintBox 與兩個按鈕:「載入圖片」與「套用平鋪」。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DIB, StdCtrls;
type
TForm1 = class(TForm)
DXPaintBox1: TDXPaintBox;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
ImgPath1 = 'C:\Temp\DX.jpg';
begin
// 1. 從檔案載入圖片到 DIB
DXPaintBox1.DIB.LoadFromFile(ImgPath1);
// 2. 調整 PaintBox 尺寸以完整顯示原圖
DXPaintBox1.Width := DXPaintBox1.DIB.Width;
DXPaintBox1.Height := DXPaintBox1.DIB.Height;
// 3. 重繪顯示
DXPaintBox1.Repaint;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// 將目前 DIB 內容以 2x2 方式平鋪
DXPaintBox1.DIB.DoTile(2);
// 重繪以呈現效果
DXPaintBox1.Repaint;
end;
end.
C:\Temp\DX.jpg,並將 TDXPaintBox 大小設為圖片原始尺寸,畫面顯示單張原圖。DoTile(2),原圖在水平與垂直方向各重複 2 次,形成 2x2 的拼貼圖。畫面隨即更新顯示平鋪後的結果。DoTile 會直接修改 DIB 內部像素資料,執行後原始圖片資料將被覆蓋。若需保留原圖,請先備份 DIB。TileCount 倍,記得配合調整顯示控件大小或捲軸。DIB 單元。透過 TDIB.DoTile,開發者能以極少代碼實現圖片無縫平鋪,是 2D 遊戲背景渲染與介面美化的得力工具。