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

Delphi 實現百葉窗圖像切換特效

     編輯:Delphi

效果原理

將目標圖像按水平條帶分割,逐條以漸進方式從源畫布複製到目標畫布,形成百葉窗翻動視覺效果。

核心代碼

procedure TForm1.FanEffect;
var
  r1: TRect;
  list, r, every: Integer;
begin
  list := 1;
  every := Trunc(Screen.Height / 10) + 1; // 分 10 條帶
  while list <= every do
  begin
    for r := 0 to 10 do
    begin
      r1 := Rect(0, r * every, Screen.Width, r * every + list);
      Image2.Canvas.CopyRect(r1, Image1.Canvas, r1);
    end;
    Update; // 強制重繪
    Inc(list);
  end;
end;

參數說明

  • every:每條帶的高度 (螢幕高度/10)。
  • list:當前已複製的行數,從 1 遞增到 every。
  • r:帶索引 0..10。
  • Rect(0, r*every, Width, r*every+list):第 r 條帶的當前可見區域。

使用方法

  1. 放置兩個 TImage:Image1 載入源圖片 (Visible = False),Image2 顯示特效。
  2. 在按鈕或定時器中調用 FanEffect。
  3. 可調整分帶數 (10) 與遞增步長 (list) 控制速度與平滑度。

擴展想法

  • 垂直百葉窗:交換 X/Y 座標計算。
  • 淡入淡出結合:在 CopyRect 後混合 Alpha。
  • 使用 TBitmap 雙緩衝減少閃爍。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved