Erfahren Sie, wie Sie effektiv ein `System.Drawing.Bitmap` in ein `WPF BitmapImage` konvertieren, mit klaren Schritten und Best Practices.
---
Dieses Video basiert auf der Frage https://stackoverflow.com/q/94456/ gestellt von dem Nutzer 'Kevin' ( https://stackoverflow.com/u/2723/ ) sowie auf der Antwort https://stackoverflow.com/a/96470/ bereitgestellt von dem Nutzer 'Kevin' ( https://stackoverflow.com/u/2723/ ) auf der Website 'Stack Overflow'. Vielen Dank an diese großartigen Nutzer und die Stackexchange-Community für ihre Beiträge.
Besuchen Sie diese Links, um den Originalinhalt und weitere Details zu sehen, z. B. alternative Lösungen, aktuelle Entwicklungen zum Thema, Kommentare, Versionsverlauf usw. Der ursprüngliche Titel der Frage lautete beispielsweise: Load a WPF BitmapImage from a System.Drawing.Bitmap
Außerdem steht der Inhalt (außer Musik) unter der Lizenz CC BY-SA https://meta.stackexchange.com/help/l...
Der ursprüngliche Fragenbeitrag steht unter der Lizenz 'CC BY-SA 3.0' ( https://creativecommons.org/licenses/... ), und der ursprüngliche Antwortbeitrag steht unter der Lizenz 'CC BY-SA 3.0' ( https://creativecommons.org/licenses/... ).
Falls Ihnen irgendetwas auffällt oder Unstimmigkeiten bestehen, schreiben Sie mir bitte an vlogize [AT] gmail [DOT] com.
---
Wie man ein WPF BitmapImage aus einem System.Drawing.Bitmap lädt
Bei der Entwicklung von Anwendungen mit WPF (Windows Presentation Foundation) kann es vorkommen, dass Sie Bilder verwenden möchten, die in anderen Formaten gespeichert sind, beispielsweise solche, die mit System.Drawing.Bitmap erstellt wurden. Dies kann eine Herausforderung darstellen, insbesondere wenn Sie diese Bilder in Ihrer WPF-Anwendung als System.Windows.Media.Imaging.BitmapImage nutzen möchten. In diesem Blogbeitrag zeigen wir, wie Sie ein WPF BitmapImage aus einem System.Drawing.Bitmap laden können, sodass Sie Ihre Bitmap-Bilder effektiv in Ihre WPF-Projekte integrieren können.
Warum Sie System.Drawing.Bitmap in WPF BitmapImage konvertieren müssen
Der Hauptgrund für diese Konvertierung liegt darin, dass WPF eine andere Rendering-Engine und ein anderes Bildverarbeitungssystem verwendet als WinForms. Während System.Drawing.Bitmap eine geeignete Wahl für Bilder in Windows Forms-Anwendungen ist, nutzt WPF eine andere Klassenhierarchie. Daher ist es notwendig, die Bitmap in ein kompatibles Format zu konvertieren, um sie in WPF-Steuerelementen und UI-Elementen zu verwenden.
Die Lösung
Dank der Beiträge der Programmier-Community haben wir eine einfache Methode, um ein System.Drawing.Bitmap in ein WPF BitmapImage zu konvertieren. So gehen Sie vor:
Schritt-für-Schritt-Anleitung
Bereiten Sie Ihre Bitmap vor: Stellen Sie sicher, dass Sie eine Instanz von System.Drawing.Bitmap vorliegen haben.
Verwenden Sie Interop, um BitmapSource zu erstellen: Nutzen Sie die Methode CreateBitmapSourceFromHBitmap aus der Klasse System.Windows.Interop.Imaging, um die Konvertierung durchzuführen.
Beispielcode
Hier ein einfacher und effektiver Codeausschnitt, der die Konvertierung demonstriert:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Erklärung des Codes
GetHbitmap(): Diese Methode gibt einen Handle (Zeiger) auf eine GDI-Bitmap zurück, die verwendet werden kann, um ein Windows Presentation Foundation (WPF) BitmapSource zu erstellen.
Interop.CreateBitmapSourceFromHBitmap: Diese statische Methode erstellt ein BitmapSource aus dem HBitmap-Handle, wodurch das Bitmap innerhalb des WPF-Frameworks nutzbar wird.
IntPtr.Zero: Dieser Parameter gibt an, dass keine weiteren Optionen für die Bitmap gesetzt werden.
Int32Rect.Empty: Wird verwendet, wenn die vollständigen Bildabmessungen übernommen werden sollen.
BitmapSizeOptions.FromWidthAndHeight: Diese Option ermöglicht es, die Breite und Höhe des Bildes anzugeben, mit dem gearbeitet wird.
Bindung an BitmapSource
Es ist wichtig zu beachten, dass Sie in diesem Fall nicht an ein BitmapImage, sondern an ein BitmapSource binden. Der Grund hierfür ist, dass BitmapSource die Basisklasse für alle Bitmap-Quellen in WPF ist und erweiterte Kompatibilität sowie Leistungsmerkmale innerhalb der WPF-Anwendung bietet.
Fazit
Indem Sie die oben beschriebenen einfachen Schritte befolgen, können Sie problemlos ein System.Drawing.Bitmap in ein WPF BitmapImage umwandeln. Dies verbessert nicht nur die Benutzeroberfläche Ihrer Anwendung, sondern erlaubt Ihnen auch, vorhandene Bitmap-Ressourcen zu nutzen. Ob zum Anzeigen von Bildern in Steuerelementen oder zum Zeichnen in Grafikobjekten – das Verständnis, wie man diese beiden Klassen miteinander verbindet, ist für jeden WPF-Entwickler essenziell. Viel Erfolg beim Programmieren!
Информация по комментариям в разработке