Zitat von
thomas2009:
Delphi-Quellcode:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Canvas.LineTo(X, Y);
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.MoveTo(X, Y);
end;
Offensichtlich ist X und Y hier nicht korrekt (was ja auch beim Zoomen zu erwarten war, weil dann ein Pixel auf dem Bildschirm nicht mehr einem Pixel im Bild entspricht). Du musst also X und Y mit dem Zoomfaktor verrechnen, damit die neue Position stimmt. Mach am Besten auf Papier ein Beispiel und nimm einen dankbaren Zoomfaktor (z.B. 200%, 400%, etc. ). Ich würde auch nicht direkt mit einer Linie anfangen, sondern mit einem einzelnen gesetzten Pixel. Damit ist noch viel klarer, um wie viel du in welche Richtung daneben liegst. Und so arbeitest du Dich langsam durch das Problem (was sich wahrscheinlich auf zwei einfache Multiplikationen reduzieren wird
)