Cześć.
Otrzymałem o statnio zadanie do wykonania które polega na tym aby podczas ruszania kursorem shape1 poruszał się wraz z nim dokładnie w centralnej części jego pola. I tak też zrobiłem. Dodatkowo też dany shape1 nie może wyjść poza obręb image1 w momencie kiedy kursor opuści obszar zajmowany przez image1.
Proszę pomóżcie mi [???] W jaki sposób zrobić aby ten shape1 nie wyszedł poza obszar image1.
Oto mój kod w którym wykonuję wszystki czynności:
procedure TForm1.kolorujClick(Sender: TObject);
var x,y:integer;
var bmp:tbitmap;
wiersz:pbytearray;
begin
bmp:=tbitmap.create;
bmp.height:=image1.height;
bmp.width:=image1.width;
bmp.PixelFormat:=pf24bit;
for y:=0 to 255 do begin
wiersz:=bmp.scanline[y];
for x:=0 to 255 do begin
wiersz [3*x]:=100;
wiersz [3*x+1]:=y;
wiersz [3*x+2]:=x;
end;
end;
image1.Canvas.Draw(0,0,bmp);
image2.Canvas.Draw(0,0,bmp);
image3.Canvas.Draw(0,0,bmp);
image4.Canvas.Draw(0,0,bmp);
image5.Canvas.Draw(0,0,bmp);
bmp.Free;
end;
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
{prawdopodobnie to będzie w tym miejsc jeśli nie to podajcie gdzie i w jaki sposób}
Shape1.left:=Shape1.left+x-shape1.width div 2;
Shape1.top:=Shape1.top+y-Shape1.height div 2;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Edit1.Text:=intToStr(x);
Edit2.Text:=intToStr(y);
Shape1.left:=(image1.Width div 2)+x;
Shape1.Top:=image1.Top+y-shape1.Width;
end;
procedure TForm1.Shape2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Shape2.top:=Shape2.top+y-Shape2.height div 2;
end;
procedure TForm1.Shape3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Shape3.left:=Shape3.left+x-Shape3.width div 2;
end;
procedure TForm1.Shape4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Shape4.left:=Shape4.left+x-Shape4.width div 2;
end;
procedure TForm1.Shape5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Shape5.left:=Shape5.left+x-Shape5.width div 2;
end;
end.</b>