Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya Boleh Mempercepatkan Penukaran BitmapSource dalam WPF untuk Paparan Imej yang Cekap?

Bagaimanakah saya Boleh Mempercepatkan Penukaran BitmapSource dalam WPF untuk Paparan Imej yang Cekap?

Linda Hamilton
Linda Hamiltonasal
2025-01-11 11:03:43730semak imbas

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

Mengoptimumkan Penukaran Bitmap kepada BitmapSource dalam WPF untuk Paparan Imej Lancar

Masalah:

Aplikasi WPF yang memaparkan imej pada 30Hz menggunakan CreateBitmapSourceFromHBitmap selalunya mengalami penggunaan CPU yang tinggi (sekitar 80%), menjejaskan prestasi. Ini disebabkan oleh kelambatan yang wujud dalam proses penukaran.

Punca Punca:

Kaedah CreateBitmapSourceFromHBitmap tidak cekap untuk kemas kini imej frekuensi tinggi.

Penyelesaian yang Diperbaiki:

Pendekatan yang jauh lebih pantas melibatkan akses memori langsung dan spesifikasi PixelFormat yang jelas:

<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>

Kaedah yang dioptimumkan ini secara langsung mengakses data piksel peta bit, menyatakan format PixelFormats.Bgr24, dengan itu memintas kesesakan prestasi CreateBitmapSourceFromHBitmap dan mengakibatkan pengurangan penggunaan CPU yang ketara, memastikan paparan imej yang lebih lancar pada kadar bingkai yang dikehendaki.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Mempercepatkan Penukaran BitmapSource dalam WPF untuk Paparan Imej yang Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn