Verbesserung der WPF-Bitmap-zu-BitmapSource-Konvertierung für eine reibungslose Bildanzeige mit hoher Bildrate
Um eine reibungslose Bildanzeige auf der Image
-Steuerung von WPF bei hohen Bildwiederholfrequenzen (z. B. 30 Hz) aufrechtzuerhalten, ist eine effiziente Konvertierung von System.Drawing.Bitmap
in System.Windows.Media.Imaging.BitmapSource
erforderlich. Die übliche CreateBitmapSourceFromHBitmap
-Methode kann rechenintensiv sein, zu einer hohen CPU-Auslastung führen und die Leistung beeinträchtigen.
Erweiterte Konvertierung für verbesserte Leistung
Für eine bessere Leistung empfiehlt sich ein direkterer Ansatz. Dazu gehört das Sperren der Bitmaps und der direkte Zugriff auf die Pixeldaten. Die genaue Angabe des PixelFormat
bei der Konvertierung erhöht die Geschwindigkeit zusätzlich. Der folgende Code veranschaulicht diese optimierte Methode:
<code class="language-csharp">public static BitmapSource Convert(System.Drawing.Bitmap bitmap) { var bitmapData = bitmap.LockBits( new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat); var bitmapSource = BitmapSource.Create( bitmapData.Width, bitmapData.Height, bitmap.HorizontalResolution, bitmap.VerticalResolution, PixelFormats.Bgr24, null, bitmapData.Scan0, bitmapData.Stride * bitmapData.Height, bitmapData.Stride); bitmap.UnlockBits(bitmapData); return bitmapSource; }</code>
Diese optimierte Konvertierung erreicht normalerweise Geschwindigkeiten, die mindestens viermal schneller sind als CreateBitmapSourceFromHBitmap
.
30 Hz und mehr erreichen: Ganzheitliche Optimierung
Während diese verbesserte Konvertierung die CPU-Last erheblich reduziert, sind für das Erreichen und Aufrechterhalten von 30 Hz (oder höher) möglicherweise weitere Optimierungen auf Anwendungsebene erforderlich. Bildgröße, Verarbeitungsstufen und Hardwarebeschränkungen spielen alle eine Rolle. Eine gründliche Anwendungsprofilierung zur Lokalisierung von Engpässen ist entscheidend für die Maximierung der Leistung bei hohen Bildraten.
Das obige ist der detaillierte Inhalt vonWie kann ich die Bitmap-zu-BitmapSource-Konvertierung in WPF für hohe Bildraten optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!