teshake.pas

来自「可以做出类似netants的那种窗体左右弹出效果」· PAS 代码 · 共 52 行

PAS
52
字号
unit teShake;

interface

uses Classes, Windows, SysUtils, Graphics, TransEff;

type
  TShakeTransition = class(TTransitionEffect)
  protected
    procedure DoExecute(Data: TTETransitionData); override;
    function  NeedDstImage: Boolean; override;
  end;

implementation

uses
  teRender, teChrono;

function TShakeTransition.NeedDstImage: Boolean;
begin
  Result := False;
end;

procedure TShakeTransition.DoExecute(Data: TTETransitionData);
var
  Chrono: TTEChrono;
  PosX,
  PosY: Integer;
begin
  Chrono := TTEChrono.Create;
  try
    Randomize;
    Chrono.Start;
    while Chrono.Milliseconds < Milliseconds do
    begin
      PosX := Random(7);
      PosY := Random(7);

      BitBlt(Data.Canvas.Handle, PosX-3, PosY-3, Data.Width, Data.Height,
        Data.SrcBmp.Canvas.Handle, 0, 0, cmSrcCopy);

      Sleep(35);
    end;
    BitBlt(Data.Canvas.Handle, 0, 0, Data.Width, Data.Height,
      Data.SrcBmp.Canvas.Handle, 0, 0, cmSrcCopy);
  finally
    Chrono.Free;
  end;
end;

end.

⌨️ 快捷键说明

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