鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(1)
这篇文章介绍了鼠标痕迹四语言版本中的VB版本,接下来介绍Delphi版本。
VB版下载地址:http://download.csdn.net/detail/u011351840/5753079
VB.net版下载地址:http://download.csdn.net/detail/u011351840/5753069
C#版下载地址:http://download.csdn.net/detail/u011351840/5753061
Delphi版下载地址:http://download.csdn.net/detail/u011351840/5753063
思路还是一样的,一个窗体一个Timer
Var中同样四个变量
size:integer;
i:integer;
ce:integer;
xv:array[0..1023] of integer;
yv:array[0..1023] of integer;
si:array[0..1023] of integer;
初始化这几个变量
procedure TForm1.FormCreate(Sender: TObject);
begin
ce:=0;
size:=1023;
for i:=0 to size do
begin xv[i]:=-1; yv[i]:=-1; si[i]:=2;
end;
end;
同样在MouseMove事件中添加当前位置
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
xv[ce]:= x;
yv[ce]:= Y;
ce := ce + 1;
If ce >= size Then
ce := 0;
end;
Timer是比较重要的代码,也略显复杂,要注意的是Delphi也需要在绘制之前清屏,要设置好刷子和笔的颜色,不能混到一块了。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
canvas.Brush.Color:=RGB(255,255,255);
canvas.Rectangle(0,0,form1.Width,form1.Width);
for i:=0 To size do
begin
If xv[i] <> -1 Then
begin
canvas.Pen.Color:=RGB(random(255),random(255),random(255));
canvas.Pen.Width:=4;
canvas.Ellipse(xv[i]-si[i],yv[i]-si[i],xv[i]+si[i],yv[i]+si[i]);
if si[i]>40 then
begin
xv[i]:= -1;
yv[i]:=-1;
si[i]:=2;
end;
si[i]:= si[i] + 2
end;
end;
end;
相对来说Delphi设置透明就简单多了。
在窗体属性中有一个TransparentColor和TransparentColorValue,把窗体设置成你喜欢的颜色,再把TransparentColorValue设置成和窗体一样的颜色。 把TransparentColor设置成True,这时候窗体就透明了,可是又遇到和VB同样的情况----MouseMove事件不能触发,解决方法也是相同的,在Timer中监视。 Delphi中不需要API声明,可以直接使用GetCursorPos(TPoint p)函数 先在Var中添加一个变量p
p:TPoint;
然后就能使用API了
GetCursorPos(p);
nx:=StrtoInt(format('%d',[p.x]));
ny:=StrtoInt(format('%d',[p.y]));
以上是Delphi版本的代码
下一篇,C#和VB.net版本
鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(3)