ホームページ >バックエンド開発 >C++ >高速画像表示のために WPF でビットマップ変換を最適化するにはどうすればよいですか?

高速画像表示のために WPF でビットマップ変換を最適化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-11 11:05:41154ブラウズ

How Can I Optimize Bitmap Conversion in WPF for High-Speed Image Display?

WPF 画像表示速度の向上: ビットマップ変換の最適化

迅速なビットマップ更新を必要とする WPF アプリケーションでは、Bitmap から BitmapSource への変換プロセスがパフォーマンスに重大な影響を及ぼし、CPU 使用率が高くなり、画像表示がぎくしゃくする可能性があります。

CreateBitmapSourceFromHBitmap は一般的なソリューションですが、計算オーバーヘッドがかなり大きくなる可能性があります。 パフォーマンスを大幅に向上させるには、安全でないコードを使用した直接メモリ操作を検討してください。

次のコードは、より高速な変換方法を提供しており、CreateBitmapSourceFromHBitmap に比べて少なくとも 4 倍の速度向上が実証されています。 PixelFormatBitmapSource:

と一致していることを必ず確認してください。
<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>

この最適化された方法により、ビットマップ変換中の CPU 負荷が大幅に軽減され、WPF アプリケーション内の高頻度更新シナリオでの画像表示がよりスムーズかつ高速になります。

以上が高速画像表示のために WPF でビットマップ変換を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。