Image Delphi中图像运动边界的定义
我需要沿X轴移动图像,当图像到达定义的边界时,停止移动(我正在制作自己的轨迹栏)。我不知道如何定义边界。用我的代码,当它到达边界时,它在那里卡住,无法移动。这是密码Image Delphi中图像运动边界的定义,image,delphi,border,sprite,timage,Image,Delphi,Border,Sprite,Timage,我需要沿X轴移动图像,当图像到达定义的边界时,停止移动(我正在制作自己的轨迹栏)。我不知道如何定义边界。用我的代码,当它到达边界时,它在那里卡住,无法移动。这是密码 var PinCurrentPosition,PinStartingPosition:integer; move:boolean; procedure TForm1.FormCreate(Sender: TObject); begin DoubleBuffered := True; Image5.Picture.Loa
var
PinCurrentPosition,PinStartingPosition:integer;
move:boolean;
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := True;
Image5.Picture.LoadFromFile('Untitled2.bmp');
PinStartingPosition:=Image5.Left;
end;
procedure TForm1.Image5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (button <> mbLeft) then move:=false
else
begin
move:=true;
PinCurrentPosition:=x;
end;
end;
procedure TForm1.Image5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if move and ((PinStartingPosition-75)<Image5.Left)
and ((PinStartingPosition+75)>Image5.Left) then
Image5.Left:=Image5.Left+x-PinCurrentPosition;
end;
procedure TForm1.Image5MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
move:=false;
end;
var
PinCurrentPosition、PinStartingPosition:整数;
移动:布尔;
过程TForm1.FormCreate(发送方:TObject);
开始
双缓冲:=真;
Image5.Picture.LoadFromFile('Untitled2.bmp');
销开始位置:=图像5.左侧;
终止
程序TForm1.Image5MouseDown(发送方:ToObject;按钮:TMouseButton;
移位:t移位状态;X,Y:整数);
开始
如果(按钮),则移动:=假
其他的
开始
move:=真;
PinCurrentPosition:=x;
终止
终止
程序TForm1.Image5MouseMove(发送方:TObject;移位:TShiftState;X,
Y:整数);
开始
如果移动并((销开始位置-75)图像5.左)则
Image5.Left:=Image5.Left+x-PinCurrentPosition;
终止
步骤t用于m1.Image5MouseUp(发送方:ToObject;按钮:TMouseButton;
移位:t移位状态;X,Y:整数);
开始
move:=假;
终止
如果图像位于可移动区域之外,则应向Image5MouseMove添加一个Else程序,以纠正图像位置:
procedure TForm1.Image5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if
move and
(Image5.Left>(PinStartingPosition-75)) and
(Image5.Left<(PinStartingPosition+75))
then
Image5.Left:=Image5.Left+x-PinCurrentPosition;
else if Image5.Left<=(PinStartingPosition-75) then
Image5.Left:= PinStartingPosition-75+1
else if Image5.Left>=(PinStartingPosition+75) then
Image5.Left:= PinStartingPosition+75-1;
end;
程序TForm1.Image5MouseMove(发送方:ToObject;Shift:TShiftState;X、,
Y:整数);
开始
如果
移动和
(图5.左>(销开始位置-75))和
(Image5.LeftIt闪烁,但我将move:=false;
添加到每个Else
中,现在它几乎按照我需要的方式工作,非常感谢