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
Lepaskan: 2025-01-11 11:03:43
asal
752 orang telah melayarinya

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:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan