效果預覽

核心代碼
var
bit: TBitmap;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Caption := '加載';
Button2.Caption := '居中';
Button3.Caption := '拉伸';
Button4.Caption := '平鋪';
bit := TBitmap.Create;
Self.Brush.Bitmap := nil;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
bit.Free;
end;
{ 原圖繪製 (0,0) }
procedure TForm1.Button1Click(Sender: TObject);
begin
Repaint;
bit.LoadFromFile('C:\Temp\Test.bmp');
Canvas.Draw(0, 0, bit);
end;
{ 居中繪製 }
procedure TForm1.Button2Click(Sender: TObject);
var
x, y: Integer;
begin
Repaint;
x := (ClientWidth - bit.Width) div 2;
y := (ClientHeight - bit.Height) div 2;
Canvas.Draw(x, y, bit);
end;
{ 拉伸填滿客戶區 }
procedure TForm1.Button3Click(Sender: TObject);
begin
Repaint;
Canvas.StretchDraw(ClientRect, bit);
end;
{ 平鋪填滿 }
procedure TForm1.Button4Click(Sender: TObject);
begin
Self.Brush.Bitmap := bit;
Repaint;
Self.Brush.Bitmap := nil; // 用完清理,避免影響後續繪製
end;
關鍵 API 說明
| 方法 | 用途 | 特點 |
| Canvas.Draw(X, Y, Bitmap) | 原尺寸繪製 | 需自行計算座標 |
| Canvas.StretchDraw(Rect, Bitmap) | 拉伸繪製 | 自動適應矩形區域 |
| Brush.Bitmap := Bitmap | 平鋪背景 | 配合 Repaint 自動鋪滿 |
窗體設計 (DFM 摘要)
object Form1: TForm1
ClientHeight = 231
ClientWidth = 335
OnCreate = FormCreate
OnDestroy = FormDestroy
object Button1: TButton ... OnClick = Button1Click end
object Button2: TButton ... OnClick = Button2Click end
object Button3: TButton ... OnClick = Button3Click end
object Button4: TButton ... OnClick = Button4Click end
end