Dipende semplicemente dal fatto che utilizzi il metodo Image1_MouseDown anzichè Form1_MouseDown e poi disegni sul canvas del Form1.
Quindi, tu clicki su Image1 e alle coordinate corrispondenti disegni la corce, con il particolare che le coordinate fanno poi riferimento al form e non più al controllo Image che ti restituisce tali valori. In questo modo se Image1 non si trova esattamente all'inizio del form (top=0 e left=0) vedrai le croci spostate.
Le soluzioni sono 2:
-Utilizzi solo il form:
codice:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then begin
Canvas.pen.Color:= clRed ;
Canvas.pen.Style:=psSolid;
Canvas.MoveTo(x-3,y);
Canvas.LineTo(x+3,y);
Canvas.MoveTo(x,y-3);
Canvas.LineTo(x,y+3);
end;
end;
-Utilizzi solo image:
codice:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then begin
with Image1 do begin
Canvas.pen.Color:= clRed ;
Canvas.pen.Style:=psSolid;
Canvas.MoveTo(x-3,y);
Canvas.LineTo(x+3,y);
Canvas.MoveTo(x,y-3);
Canvas.LineTo(x,y+3);
end;
end;
end;
Spero sia abbastanza chiaro, fammi sapere...
Ciao!!