Heim > Backend-Entwicklung > C++ > Wie kann ich die Konvertierung von Bitmaps in BitmapSource in WPF für eine effiziente Bildanzeige beschleunigen?

Wie kann ich die Konvertierung von Bitmaps in BitmapSource in WPF für eine effiziente Bildanzeige beschleunigen?

Linda Hamilton
Freigeben: 2025-01-11 11:03:43
Original
730 Leute haben es durchsucht

How Can I Speed Up Bitmap to BitmapSource Conversion in WPF for Efficient Image Display?

Optimierung der Bitmap-zu-BitmapSource-Konvertierung in WPF für eine reibungslose Bildanzeige

Problem:

WPF-Anwendungen, die Bilder mit 30 Hz unter Verwendung von CreateBitmapSourceFromHBitmap anzeigen, weisen häufig eine hohe CPU-Auslastung (ca. 80 %) auf, was sich auf die Leistung auswirkt. Dies liegt an der inhärenten Langsamkeit des Konvertierungsprozesses.

Grundursache:

Die CreateBitmapSourceFromHBitmap Methode ist für hochfrequente Bildaktualisierungen ineffizient.

Verbesserte Lösung:

Ein deutlich schnellerer Ansatz beinhaltet den direkten Speicherzugriff und die explizite PixelFormat-Spezifikation:

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

Diese optimierte Methode greift direkt auf die Pixeldaten der Bitmap zu und gibt das PixelFormats.Bgr24-Format an. Dadurch wird der Leistungsengpass von CreateBitmapSourceFromHBitmap umgangen, was zu einer erheblichen Reduzierung der CPU-Auslastung führt und eine flüssigere Bildanzeige bei der gewünschten Bildrate gewährleistet.

Das obige ist der detaillierte Inhalt vonWie kann ich die Konvertierung von Bitmaps in BitmapSource in WPF für eine effiziente Bildanzeige beschleunigen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage