图像的飘动效果

procedure TForm15.FormActivate(Sender: TObject);
var
  X:Real;
  Z:integer;
  A:integer;
  pic1:TBitmap;
  pic2:TBitmap;
begin
A:=0;
pic1:=TBitmap.Create;
pic2:=TBitmap.Create;
pic1.Width:=312;
pic1.Height:=312;

pic1.Canvas.Brush.Color:=clBlack;

pic2.Width:=312;
pic2.Height:=312;
pic2.Canvas.Brush.Color:=clBlack;
Repeat
  for Z:=1 to 312 do
  begin
    inc(A);
    if A>310 then A:=0;
    X:=cos((A/0.05)/Pi)*(16/2.5);
    pic1.Canvas.CopyRect(Bounds(Round(X),Z,312,1),Image1.Canvas,Bounds(0,Z,312,1));

  end;
  for Z:=1 to 312 do
  begin
    inc(A);if A>310 then A:=0;
    X:=Cos((A/0.05)/Pi)*(16/2.5);
    pic2.Canvas.CopyRect(Bounds(Z,Round(X),1,312),pic1.Canvas,Bounds(Z,0,1,312));
  end;
  canvas.Draw(0,0,pic2);
  pic1.Canvas.Rectangle(0,0,312,312);
  pic2.Canvas.Rectangle(0,0,312,312);
  Application.ProcessMessages;
  Until Application.Terminated;

pic1.Free;
pic2.Free;

end;

原文地址:https://www.cnblogs.com/huking/p/1702599.html