Zoomen und Verschieben eines Bildes von der Mausposition aus
In diesem Szenario „springt“ das Bild und kann nicht vom verschobenen Ursprung aus skaliert werden Die Verschiebung von der Mausposition zur Bildmitte wird nicht richtig berechnet. Außerdem berücksichtigt die Übersetzung nach der Skalierung des Bildes nicht die skalierte Bildgröße, was zu falschen Ergebnissen führt.
Um dieses Problem zu lösen, sollte die Transformationssequenz wie folgt sein:
Hier ist eine Beispielimplementierung:
private void pnl1_Paint(object sender, PaintEventArgs e) { // Translate to (0, 0) e.Graphics.TranslateTransform(-img.Width / 2, -img.Height / 2); // Scale the image e.Graphics.ScaleTransform(zoom, zoom); // Translate back to mouse location e.Graphics.TranslateTransform(mouse.X, mouse.Y); // Draw the image at the new location e.Graphics.DrawImage(img, 0, 0); }
Das obige ist der detaillierte Inhalt vonWie kann ich ein Bild von einer Mausposition aus richtig zoomen und verschieben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!