哪位大神用中文幫小弟我翻譯一下這段代碼
哪位大神用中文幫我翻譯一下這段代碼
圖片隨機移動的代碼,本人菜鳥,很多無法看懂,望有高手幫我解析一下,謝謝
procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize;
if random(10)=0 then
timer1.Tag :=random(4);
case timer1.Tag of
0: begin
if image1.Left >0 then image1.Left:=image1.Left-10
else
timer1.Tag:=1
end;
1: begin
if image1.Left+image1.Width <form1.Width then
image1.Left:=image1.Left+10
else
timer1.Tag:=0
end;
2: begin
if image1.Top >0 then
image1.Top :=image1.Top-10
else
timer1.Tag :=3
end;
3: begin
if image1.Top+image1.Height <form1.Height then
image1.Top :=image1.Top+10
else
timer1.Tag :=2
end;
end;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
image1.Left :=x;
image1.Top :=y;
end;
procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (image1.Left =x)and(image1.Top =y ) then
timer1.Enabled :=false
//else timer1.Enabled :=true
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
timer1.Enabled :=false
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// timer1.Enabled :=false;
end;
procedure TForm1.cmmouseleave(var Message: TMessage);
begin
timer1.Enabled :=true
end;
------解决思路----------------------
图片移动,感觉像动画一样,就这个
------解决思路----------------------
类似屏幕保护的功能,img1在主窗体上随机移动。
------解决思路----------------------
通过随机数,让图像在窗体随机漂动。
------解决思路----------------------
说清楚了吗?
圖片隨機移動的代碼,本人菜鳥,很多無法看懂,望有高手幫我解析一下,謝謝
procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize;
if random(10)=0 then
timer1.Tag :=random(4);
case timer1.Tag of
0: begin
if image1.Left >0 then image1.Left:=image1.Left-10
else
timer1.Tag:=1
end;
1: begin
if image1.Left+image1.Width <form1.Width then
image1.Left:=image1.Left+10
else
timer1.Tag:=0
end;
2: begin
if image1.Top >0 then
image1.Top :=image1.Top-10
else
timer1.Tag :=3
end;
3: begin
if image1.Top+image1.Height <form1.Height then
image1.Top :=image1.Top+10
else
timer1.Tag :=2
end;
end;
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
image1.Left :=x;
image1.Top :=y;
end;
procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (image1.Left =x)and(image1.Top =y ) then
timer1.Enabled :=false
//else timer1.Enabled :=true
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
timer1.Enabled :=false
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// timer1.Enabled :=false;
end;
procedure TForm1.cmmouseleave(var Message: TMessage);
begin
timer1.Enabled :=true
end;
------解决思路----------------------
图片移动,感觉像动画一样,就这个
------解决思路----------------------
类似屏幕保护的功能,img1在主窗体上随机移动。
------解决思路----------------------
通过随机数,让图像在窗体随机漂动。
------解决思路----------------------
// Timer1事件
procedure TForm1.Timer1Timer(Sender: TObject);
begin
randomize; // 设置随机种子
if random(10)=0 then // 随机数 0-9 当随机数=0时 (1/10的机率)
timer1.Tag :=random(4); // Tag 是供用户自由使用的integer变量
// 这里随机取0-3值
case timer1.Tag of
0: begin
if image1.Left >0
then image1.Left:=image1.Left-10 // 图像左移10像素
else timer1.Tag:=1 // 图像不动 Tag=1
end;
1: begin
if image1.Left+image1.Width <form1.Width
then image1.Left:=image1.Left+10 // 图像右移10像素
else timer1.Tag:=0
end;
2: begin
if image1.Top >0
then image1.Top :=image1.Top-10 // 图像上移10像素
else timer1.Tag :=3
end;
3: begin
if image1.Top+image1.Height <form1.Height
then image1.Top :=image1.Top+10 // 图像下移10像素
else timer1.Tag :=2
end;
end;
end;
// 将对象拖过控件的边界时发生
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
image1.Left :=x;
image1.Top :=y;
end;
// 将对象拖过控件的边界时发生
procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (image1.Left=x) and (image1.Top=y) then
timer1.Enabled :=false;
end;
// 鼠标指针移到控件上时发生
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
timer1.Enabled :=false // 鼠标移到图像上时停止timer1(移动)
end;
// 原方法 procedure CMMouseLeave (var Message: TMessage); message CM_MOUSELEAVE;
// wm_mouseleave是windows的消息
// 它是获得Delphi的内部消息,鼠标离开时发生
procedure TForm1.cmmouseleave(var Message: TMessage);
begin
timer1.Enabled :=true // 鼠标离开时启动timer1(移动 )
end;
说清楚了吗?