Dieser Artikel befasst sich mit dem Problem des Zoomens (Skalierens) eines Bildes von der Mausposition aus mithilfe von Transformationen im Paint-Ereignis. Nach der Übersetzung des Bitmap-Ursprungs in die Mausposition wird das Bild skaliert und sein Ursprung zurückversetzt. Das Bild „springt“ jedoch und kann während der Mauspositionsübersetzung nicht vom verschobenen Ursprung aus skaliert werden.
Um dieses Problem zu beheben, implementieren wir die folgenden Strategien:
Zur visuellen Demonstration implementiert unser Beispielcode vier Zoommodi in einem benutzerdefinierten PictureBoxEx-Steuerelement:
Der in der Antwort bereitgestellte Code führt das benutzerdefinierte PictureBoxEx-Steuerelement ein, das von PictureBox erbt und benutzerdefinierte Funktionen enthält. Es enthält auch die Canvas-Variable, die das benutzerdefinierte Steuerelement darstellt, das dem Formular während der Initialisierung hinzugefügt wurde. Die ZoomMode-Enumeration wird verwendet, um die verschiedenen Zoommodi zu definieren.
Die Ereignishandler für Mausereignisse und die Spurleiste sowie die Kern-Mallogik handhaben die Zoom- und Rotationsvorgänge basierend auf dem ausgewählten Zoommodus.
Denken Sie daran, die Zeichenfolge imagePath in den tatsächlichen Pfad Ihrer Bilddatei zu ändern, bevor Sie ausführen Code.
Dieser Ansatz bietet eine effizientere und stabilere Methode zum Zoomen und Übersetzen von Bildern von der Mausposition aus. Es verringert die Wahrscheinlichkeit unerwarteter visueller Artefakte oder Leistungsprobleme bei der Verarbeitung komplexer Transformationen.
Das obige ist der detaillierte Inhalt vonWie kann ich in C# ein Bild von der Mausposition aus richtig zoomen und verschieben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!