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

Delphi 圖形繪製二則:漸層色彩背景與圖片拉伸動畫效果

     編輯:Delphi

本文提供兩個經典 Delphi 圖形技巧:使用 TCanvas.FillRect 繪製漸層背景,以及利用 TImage.Stretch 配合 TTimer 實作圖片由小變大的拉伸動畫。

技巧一:表單漸層背景 (由左而右黃→白)

原理:在 Button1Click 中迴圈繪製 256 個寬度 2 像素的矩形,每次遞增藍色分量 (R=255, G=255, B=0..255)。


procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  Rct: TRect;
begin
  j := ClientHeight;
  for i := 0 to 255 do
  begin
    Canvas.Brush.Color := RGB(255, 255, i); // 藍色分量遞增
    Rct := Rect(i * 2, 0, (i + 1) * 2, j);
    Canvas.FillRect(Rct);
  end;
end;

改良建議:
• 移至 OnPaint 並設定 DoubleBuffered := True 避免重繪閃爍。
• 使用 GradientFill API (Windows 2000+) 或 TCanvas.GradientFill (Delphi 10.4+) 簡化程式碼。
• 支援垂直、對角、多色停漸層擴展。

技巧二:圖片整體拉出動畫 (由上往下展開)

前置條件:
• Image1 載入圖片,Height := 0, Stretch := True。
• Timer1:Interval := 50, Enabled := True。


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Image1.Height := Image1.Height + 10; // 每次增長 10 像素
  if Image1.Height >= 200 then // 目標高度
  begin
    Image1.Height := 200;
    Timer1.Enabled := False;
  end;
end;

原理:Stretch=True 時,TImage 會自動將 Picture.Graphic 縮放填滿控制項客戶區。動態改變 Height 即產生「由上往下展開」的視覺效果。

進階變體

  • 淡入淡出:結合 AlphaBlend + AlphaBlendValue (需 Layered Window 支援)。
  • 彈性動畫:使用 TTimer 計算缓動函數 (Ease Out/In/Out) 讓速度自然變化。
  • 多圖輪播:Timer 觸發切換 Picture 並重置 Height 重新動畫。

小結

漸層背景與拉伸動畫雖屬基礎繪圖技巧,卻是構建豐富 UI 視覺反饋的基石。掌握 Canvas 像素級操作與 TImage.Stretch 自動縮放特性,再配合 TTimer 或現代動畫框架 (如 FMX TFloatAnimation),即可實作專業級介面特效。

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