Heim > Backend-Entwicklung > C++ > Wie kann ich in C# ein Bild von der Mausposition aus richtig zoomen und schwenken?

Wie kann ich in C# ein Bild von der Mausposition aus richtig zoomen und schwenken?

DDD
Freigeben: 2024-12-30 20:18:12
Original
586 Leute haben es durchsucht

How to Correctly Zoom and Pan an Image from the Mouse Location in C#?

Zoomen und Verschieben eines Bildes von der Mausposition aus

Problembeschreibung

Beim Versuch, ein Bild von der Mausposition aus zu zoomen und zu skalieren, wird das Bild springt und kann nicht vom verschobenen Ursprung aus skaliert werden. Drehung, Skalierung und Schwenken funktionieren korrekt, ohne auf die Mausposition zu übertragen.

Implementierung

Um das Zoomen und Verschieben eines Bildes von der Mausposition aus zu erreichen, wenden wir die folgenden Strategien an:

  • TranslateTransform: Übersetzt die Bitmap auf die Maus Position.
  • ScaleTransform: Skaliert das Bild entsprechend dem Zoomfaktor.
  • TranslateTransform: Verschiebt das Bild zurück in seine ursprüngliche Position.
  • TranslateTransform: Übersetzt das Bild basierend auf der Schwenkbewegung Position.

Code

private void pnl1_Paint(object sender, PaintEventArgs e)
{
    // Apply rotation angle @ center of bitmap
    e.Graphics.TranslateTransform(img.Width / 2, img.Height / 2);
    e.Graphics.RotateTransform(ang);
    e.Graphics.TranslateTransform(-img.Width / 2, -img.Height / 2);

    // Apply scaling factor - focused @ mouse location
    e.Graphics.TranslateTransform(mouse.X, mouse.Y, MatrixOrder.Append);
    e.Graphics.ScaleTransform(zoom, zoom, MatrixOrder.Append);
    e.Graphics.TranslateTransform(-mouse.X, -mouse.Y, MatrixOrder.Append);

    // Apply drag (pan) location
    e.Graphics.TranslateTransform(imgX, imgY, MatrixOrder.Append);

    // Draw "bmp" @ location
    e.Graphics.DrawImage(img, 0, 0);
}
Nach dem Login kopieren

Vorschläge

  • Teilen und erobern Sie die Transformationen in spezielle Methoden.
  • Verwenden Sie eine benutzerdefinierte PictureBox mit doppelter Pufferung (z. B. PictureBoxEx).
  • Matrix.RotateAt verwenden und Matrix.Multiply für effiziente Transformationen.

Das obige ist der detaillierte Inhalt vonWie kann ich in C# ein Bild von der Mausposition aus richtig zoomen und schwenken?. 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