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:
-Utilizzi solo image: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;
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!!![]()


Rispondi quotando