📄 main.~pas
字号:
Unit main;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, Menus, ImgList, DXClass, BitmapRegion;
Type
TMainForm = Class(TForm)
PopupMenu1: TPopupMenu;
N1: TMenuItem;
Quit1: TMenuItem;
Settings1: TMenuItem;
Timer1: TTimer;
Heads: TImageList;
Legs: TImageList;
FLegs: TImageList;
FHeads: TImageList;
Procedure Quit1Click(Sender: TObject);
Procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
Procedure Timer1Timer(Sender: TObject);
Procedure LMDTrayIcon1Click(Sender: TObject);
Procedure FormCreate(Sender: TObject);
Procedure Hide1Click(Sender: TObject);
Procedure Settings1Click(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
MainForm : TMainForm;
// bitmap : tbitmap;
Const Joffacount = 1;
Const Gravity = 0.11;
Implementation
Uses joffa, settings;
{$R *.DFM}
Procedure TMainForm.Quit1Click(Sender: TObject);
Begin
MainForm.Close;
End;
Procedure TMainForm.DXTimer1Timer(Sender: TObject; LagCount: Integer);
Var i : integer;
Begin
Application.ProcessMessages;
For i := 0 To self.componentcount - 1 Do
If self.components[i] Is TJoffaForm Then
With TJoffaForm(self.components[i]) Do
Begin
// x:=x+1;
MoveJoffa;
End;
{for i:=0 to self.componentcount-1 do
if self.components[i] is TJoffaForm then
With TJoffaForm(self.components[i]) Do
Begin
// x:=x+1;
top:=round(x);
left:=round(y);
End;{}
End;
Procedure TMainForm.Timer1Timer(Sender: TObject);
Var i : integer;
Begin
Application.ProcessMessages;
For i := 0 To self.componentcount - 1 Do
If self.components[i] Is TJoffaForm Then
With TJoffaForm(self.components[i]) Do If visible Then MoveJoffa;
End;
Procedure TMainForm.LMDTrayIcon1Click(Sender: TObject);
Var i : integer;
Begin
For i := 0 To self.componentcount - 1 Do
If self.components[i] Is TJoffaForm Then
TJoffaForm(self.components[i]).Visible := True;
//LMDTrayIcon1.Active:=False;;
End;
Procedure FlipBitmap(Var bmp: tbitmap);
Type pscanline = Array[0..100000000] Of tcolor;
Var xx, yy : integer;
oscanl, scanl : ^pscanline;
oldbmp : tbitmap;
Begin
bmp.pixelformat := pf32bit;
oldbmp := tbitmap.create;
oldbmp.pixelformat := pf32bit;
oldbmp.width := bmp.width;
oldbmp.height := bmp.height;
oldbmp.Canvas.Draw(0, 0, bmp);
For yy := 0 To bmp.Height - 1 Do
Begin
scanl := bmp.ScanLine[yy];
oscanl := oldbmp.scanline[yy];
For xx := 0 To bmp.width - 1 Do
scanl[xx] := oscanl[(bmp.width - 1) - xx];
End;
oldbmp.free;
End;
Procedure MakeBMPMask(oldbmp: tbitmap; Var outbmp: tbitmap; maskcolor: tcolor);
Type pscanline = Array[0..100000000] Of tcolor;
Var xx, yy : integer;
oscanl, scanl : ^pscanline;
Begin
oldbmp.pixelformat := pf32bit;
outbmp.pixelformat := pf32bit;
outbmp.width := oldbmp.width;
outbmp.height := oldbmp.height;
//outbmp.pixelformat:=pf32bit;
outbmp.Canvas.Draw(0, 0, oldbmp);
outbmp.Mask(maskcolor);
{for yy:=0 to oldbmp.Height-1 do
begin
scanl:=outbmp.ScanLine[yy];
oscanl:=oldbmp.scanline[yy];
for xx:=0 to oldbmp.width-1 do
if oscanl[xx]=maskcolor then scanl[xx]:=clwhite else scanl[xx]:=clblack;
end;{}
End;
Procedure TMainForm.FormCreate(Sender: TObject);
Var i : integer;
bmp, mask : tbitmap;
Begin
bmp := tbitmap.create;
mask := tbitmap.create;
For i := 0 To legs.count - 1 Do
Begin
bmp.Canvas.brush.Color := clred;
bmp.Canvas.FillRect(rect(0, 0, 31, 31));
legs.getbitmap(i, bmp);
flipbitmap(bmp);
MakeBMPMask(bmp, mask, clred);
flegs.Add(bmp, mask);
End;
For i := 0 To heads.count - 1 Do
Begin
bmp.Canvas.brush.Color := clred;
bmp.Canvas.FillRect(rect(0, 0, 31, 31));
heads.getbitmap(i, bmp);
flipbitmap(bmp);
fheads.Add(bmp, Nil);
End;
bmp.free;
mask.free;
//lmdtrayicon1.icon:=application.icon;
randomize;
For i := 1 To joffacount Do
With TJoffaForm.Create(Self) Do
Begin
x := Mouse.CursorPos.X;
y := Mouse.CursorPos.Y;
pic := 0;
opic := 1;
// Images.GetBitmap(trunc(pic),Image.Picture.Bitmap);
Show;
End;
End;
Procedure TMainForm.Hide1Click(Sender: TObject);
Var i : integer;
Begin
For i := 0 To self.componentcount - 1 Do
If self.components[i] Is TJoffaForm Then
TJoffaForm(self.components[i]).Visible := False;
//LMDTrayIcon1.Active:=True;
End;
Procedure TMainForm.Settings1Click(Sender: TObject);
Begin
SettingsForm.Show;
End;
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -