Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya Boleh Mempercepatkan Penukaran BitmapSource dalam WPF untuk Paparan Imej yang Cekap?
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!