2016-04-29 19 views
0

私は30fpsでカメラからのビットマップ画像を受信し、すべての画像をpictureBoxに表示する必要があります。
問題はPictureBoxが非常に遅いことです!
DoubleBufferを有効にしてカスタムPictureBoxを実装しようとしましたが、問題は解決されません。
カスタムPictureBox、またはユーザーコントロール、またはイメージをより高速に表示できるソリューションがありますか?

追加情報:
イメージの解像度は256グレーレベル(8ビットイメージ)で2048x1088です。
私はAForge.NETを使用して画像を精巧にします。

C#高速読み込みピクチャボックスへのビットマップ

+0

PictureBoxは、デフォルトでダブルバッファされています。画像を表示する前に、リサイズをオフにするか、早い方法で見つけてください。 – TaW

+0

@TaW画像を表示する前に、画像をpictureBoxサイズにリサイズしました。 私の画像ボックスは1536x816ピクセルで、SizeModeは標準に設定されています。 – user3607507

+0

SizeMode.Normalの場合、PictureBOxはオーバーヘッドを追加すべきではありません。 Sebastionが指摘しているように、PixelFormatはビットマップを本当に速く表示するという点で大きな違いを生み出します。それを実際のものから '32bppPArgb'にも変換してください!はい、変換に時間がかかりますが、ディスプレイに保存された時間ははるかに多くなるはずです.. – TaW

答えて

1

そのイメージは、それがPBのクライアント領域に合わせてサイズ変更されなければならないときに描画する高価な取得します、ありがとうございました。あなたのイメージはかなり大きいので、あなたのケースではおそらくそうです。高品質のバイキュービックフィルタを使用して、サイズ変更されたイメージを見栄えのよいものにします。結果は良いものの、それはかなり高価です。

費用を避けるには、画像のサイズをImageプロパティに割り当てる前に自分で画像のサイズを変更します。 PBのClientSizeと同じ大きさにします。

それはそれ自体に大きな違いをもたらすでしょう。次に行うことは、32bppPArgbピクセル形式の拡大縮小ビットマップを作成することです。たいていのマシンのビデオアダプタとマッチするので、ピクセルフォーマットの変換は必要ありません。

+0

画像を表示する前に、画像をpictureBoxサイズにサイズ変更しました。 私の画像ボックスは1536x816ピクセルで、SizeModeは標準に設定されています。 – user3607507

関連する問題