Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image Delphi中图像运动边界的定义_Image_Delphi_Border_Sprite_Timage - Fatal编程技术网

Image Delphi中图像运动边界的定义

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

我需要沿X轴移动图像,当图像到达定义的边界时,停止移动(我正在制作自己的轨迹栏)。我不知道如何定义边界。用我的代码,当它到达边界时,它在那里卡住,无法移动。这是密码

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
中,现在它几乎按照我需要的方式工作,非常感谢