pseffect.pas

来自「TPicShow是一套图形平滑特效控制组件」· PAS 代码 · 共 1,828 行 · 第 1/5 页

PAS
1,828
字号
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Right := (2 * W) - X;
  R2.Right := X;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect008(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Left := X - W;
  R2.Left := W - X;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect009(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Left := X - W;
  R1.Right := (2 * W) - X;
  R2.Left := (W - X) div 2;
  R2.Right := (W + X) div 2;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect010(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R := Rect;
  R.Left := (W - X) div 2;
  R.Right := (W + X) div 2;
  Screen.Canvas.CopyRect(R, Image.Canvas, Rect);
end;

procedure Effect011(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Left := (W - X) div 2;
  R1.Right := (W + X) div 2;
  R2.Left := (W - X) div 2;
  R2.Right := (W + X) div 2;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect012(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Right := (X div 2) + 1;
  R2.Right := (X div 2) + 1;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
  R1.Left := W - (X div 2) - 1;
  R1.Right := W;
  R2.Left := W - (X div 2) - 1;
  R2.Right := W;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect013(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Right := (X div 2) + 1;
  R2.Right := (W div 2) + 1;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
  R1.Left := W - (X div 2) - 1;
  R1.Right := W;
  R2.Left := W div 2;
  R2.Right := W;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect014(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Left := X;
  if R1.Left < W div 5 then
   R1.Right := R1.Left + X div 2
  else if (R1.Left + W div 5) > W then
   R1.Right := R1.Left + (W - X) div 2
  else
   R1.Right := R1.Left + W div 10;
  R2.Left := R1.Right;
  R2.Right := R2.Left + R1.Right - R1.Left;
  MirrorCopyRect(Screen.Canvas, R1, Image, R2, True, False);
  R1.Left := 0;
  R1.Right := X;
  R2.Left := 0;
  R2.Right := X;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect015(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Right := W - X;
  if (R1.Right + W div 5) > W then
   R1.Left := R1.Right - X div 2
  else if R1.Right < W div 5 then
   R1.Left := R1.Right - (W - X) div 2
  else
   R1.Left := R1.Right - W div 10;
  R2.Right := R1.Left;
  R2.Left := R2.Right - R1.Right + R1.Left;
  MirrorCopyRect(Screen.Canvas, R1, Image, R2, True, False);
  R1.Left := W - X;
  R1.Right := W;
  R2.Left := W - X;
  R2.Right := W;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect016(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Right := X;
  R2.Right := X;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
  R1.Left := X;
  R1.Right := W;
  R2.Left := X;
  R2.Right := Min(X + W div S, W);
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect017(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Left := W - X;
  R1.Right := W;
  R2.Left := W - X;
  R2.Right := W;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
  R1.Left := 0;
  R1.Right := W - X;
  R2.Left := Max((W - X) - W div S, 0);
  R2.Right := W - X;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect018(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R := Rect;
  R.Top := H - Y;
  Screen.Canvas.CopyRect(R, Image.Canvas, Rect);
end;

procedure Effect019(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R := Rect;
  R.Bottom := Y;
  Screen.Canvas.CopyRect(R, Image.Canvas, Rect);
end;

procedure Effect020(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R := Rect;
  R.Top := H - Y;
  R.Bottom := (2 * H) - Y;
  Screen.Canvas.CopyRect(R, Image.Canvas, Rect);
end;

procedure Effect021(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R := Rect;
  R.Top := Y - H;
  R.Bottom := Y;
  Screen.Canvas.CopyRect(R, Image.Canvas, Rect);
end;

procedure Effect022(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Bottom := Y;
  R2.Bottom := Y;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect023(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Top := H - Y;
  R2.Top := H - Y;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect024(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Bottom := (2 * H) - Y;
  R2.Bottom := Y;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect025(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Top := Y - H;
  R2.Top := H - Y;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect026(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Top := Y - H;
  R1.Bottom := (2 * H) - Y;
  R2.Top := (H - Y) div 2;
  R2.Bottom := (H + Y) div 2;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect027(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Top := (H - Y) div 2;
  R1.Bottom := (H + Y) div 2;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect028(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Top := (H - Y) div 2;
  R1.Bottom := (H + Y) div 2;
  R2.Top := (H - Y) div 2;
  R2.Bottom := (H + Y) div 2;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
end;

procedure Effect029(Screen, Image: TBitmap; const Rect: TRect;
  Step: Integer; Progress: Integer);
var
  W, H, X, Y, S: Integer;
  R1, R2: TRect;
begin
  CalcParams(Rect, Step, Progress, W, H, X, Y, S);
  R1 := Rect;
  R2 := Rect;
  R1.Bottom := (Y div 2) + 1;
  R2.Bottom := (Y div 2) + 1;
  Screen.Canvas.CopyRect(R1, Image.Canvas, R2);
  R1.Top := H - (Y div 2) - 1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?