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

効率的な画像表示のために、WPF でビットマップから BitmapSource への変換を高速化するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-11 11:03:43
オリジナル
732 人が閲覧しました

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

スムーズな画像表示のための WPF でのビットマップから BitmapSource への変換の最適化

問題:

CreateBitmapSourceFromHBitmap を使用して 30Hz で画像を表示する WPF アプリケーションでは、CPU 使用率が高くなり (約 80%)、パフォーマンスに影響を与えることがよくあります。 これは、変換プロセスに固有の遅さが原因です。

根本原因:

CreateBitmapSourceFromHBitmap メソッドは、高頻度の画像更新には非効率です。

改善された解決策:

大幅に高速なアプローチには、直接メモリ アクセスと明示的な PixelFormat 仕様が含まれます。

<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>
ログイン後にコピー

この最適化されたメソッドは、PixelFormats.Bgr24 形式を指定してビットマップのピクセル データに直接アクセスします。これにより、CreateBitmapSourceFromHBitmap のパフォーマンスのボトルネックが回避され、CPU 使用率が大幅に削減され、目的のフレーム レートでのよりスムーズな画像表示が保証されます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート