將目標圖像按水平條帶分割,逐條以漸進方式從源畫布複製到目標畫布,形成百葉窗翻動視覺效果。
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 條帶的當前可見區域。TImage:Image1 載入源圖片 (Visible = False),Image2 顯示特效。FanEffect。TBitmap 雙緩衝減少閃爍。