Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengoptimumkan Penukaran Bitmap-to-BitmapSource dalam WPF untuk Kadar Bingkai Tinggi?
Meningkatkan Penukaran WPF Bitmap-to-BitmapSource untuk Paparan Imej Kadar Bingkai Tinggi yang Lancar
Mengekalkan paparan imej yang lancar pada kawalan Image
WPF pada kadar segar semula yang tinggi (cth., 30Hz) memerlukan penukaran yang cekap daripada System.Drawing.Bitmap
kepada System.Windows.Media.Imaging.BitmapSource
. Kaedah CreateBitmapSourceFromHBitmap
biasa boleh mahal dari segi pengiraan, yang membawa kepada penggunaan CPU yang tinggi dan menjejaskan prestasi.
Penukaran Dipertingkatkan untuk Prestasi Yang Dipertingkatkan
Untuk prestasi unggul, pendekatan yang lebih langsung disyorkan. Ini melibatkan mengunci bit peta bit dan mengakses terus data pikselnya. Spesifikasi tepat PixelFormat
semasa penukaran meningkatkan lagi kelajuan. Kod berikut menunjukkan kaedah yang dioptimumkan ini:
<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>
Penukaran yang dioptimumkan ini biasanya mencapai kelajuan sekurang-kurangnya empat kali lebih pantas daripada CreateBitmapSourceFromHBitmap
.
Mencapai 30Hz dan Lebih Tinggi: Pengoptimuman Holistik
Walaupun penukaran yang dipertingkatkan ini mengurangkan beban CPU dengan ketara, mencapai dan mengekalkan 30Hz (atau lebih tinggi) mungkin memerlukan pengoptimuman peringkat aplikasi selanjutnya. Saiz imej, peringkat pemprosesan dan had perkakasan semuanya memainkan peranan. Pemprofilan aplikasi yang teliti untuk menentukan kesesakan adalah penting untuk memaksimumkan prestasi pada kadar bingkai yang tinggi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Penukaran Bitmap-to-BitmapSource dalam WPF untuk Kadar Bingkai Tinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!