📄 ripple.pas
字号:
unit Ripple;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg, Math, RippleThread;
type
TForm1 = class(TForm)
BgImage: TImage;
procedure BgImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure BgImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
RippleThread: TRipple;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BgImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
RippleThread.Drop(X, Y);
end;
procedure TForm1.BgImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
KeyState: tkeyboardstate ;
begin
GetKeyboardState(KeyState);
if (KeyState[VK_LBUTTON] and $80) <> 0 then
if (X > 0) and (X < BgImage.Width) and (Y > 0) and (Y < BgImage.Height) then
RippleThread.Drop(X, Y);
end;
procedure TForm1.FormShow(Sender: TObject);
var
Bmp: TBitmap;
Stream: TMemoryStream;
begin
if FileExists(ExtractFilePath(Application.ExeName) + 'bg.bmp') then
begin
Stream := TMemoryStream.Create;
try
Stream.LoadFromFile(ExtractFilePath(Application.ExeName) + 'bg.bmp');
Bmp := TBitmap.Create;
try
Bmp.LoadFromStream(Stream);
BgImage.Picture.Bitmap.Assign(Bmp);
finally
Bmp.Free;
end;
finally
Stream.Free;
end;
end;
Self.Width := BgImage.Width;
Self.Height := BgImage.Height;
RippleThread := TRipple.Create (True);
RippleThread.FreeOnTerminate := True;
RippleThread.Image := BgImage;
RippleThread.Enabled := True;
RippleThread.Resume;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
RippleThread.Enabled := False;
RippleThread.Terminate;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -