Heim > Backend-Entwicklung > C++ > Wie kann ich ein Bild von einer Mausposition aus richtig zoomen und verschieben?

Wie kann ich ein Bild von einer Mausposition aus richtig zoomen und verschieben?

DDD
Freigeben: 2024-12-30 06:40:14
Original
490 Leute haben es durchsucht

How to Correctly Zoom and Translate an Image from a Mouse Location?

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:

  1. Übersetzen nach (0, 0): Verschieben Sie das Bild zum Ursprung, damit Sie Transformationen anwenden können dort.
  2. Skalieren Sie das Bild: Wenden Sie den Zoomfaktor bei (0, 0) an.
  3. Zurück zur Mausposition verschieben: Fügen Sie die Maus hinzu Position zurück an die Stelle, an der sich die Bildmitte befinden sollte.

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);
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage