スムーズな高フレームレート画像表示のための WPF ビットマップからビットマップソースへの変換の強化
高リフレッシュ レート (例: 30Hz) で WPF の Image
コントロールで滑らかな画像表示を維持するには、System.Drawing.Bitmap
から System.Windows.Media.Imaging.BitmapSource
への効率的な変換が必要です。 一般的な CreateBitmapSourceFromHBitmap
メソッドは計算コストが高くつくため、CPU 使用率が高くなり、パフォーマンスに影響を与える可能性があります。
パフォーマンスを向上させる変換の強化
優れたパフォーマンスを得るには、より直接的なアプローチをお勧めします。これには、ビットマップのビットをロックし、そのピクセル データに直接アクセスすることが含まれます。 変換中に 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>
この最適化された変換は通常、CreateBitmapSourceFromHBitmap
よりも少なくとも 4 倍の速度を実現します。
30Hz 以降の達成: 全体的な最適化
この変換の改善により CPU 負荷が大幅に軽減されますが、30 Hz (またはそれ以上) に達して維持するには、アプリケーション レベルのさらなる最適化が必要になる可能性があります。 画像のサイズ、処理段階、ハードウェアの制限がすべて影響します。 高フレームレートでパフォーマンスを最大化するには、ボトルネックを正確に特定するための徹底的なアプリケーションプロファイリングが重要です。
以上がWPF でビットマップからビットマップソースへの変換を最適化し、高いフレーム レートを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。