先日、Graphicsオブジェクトの違いによる描画速度の比較として、割と一般的なGraphicsオブジェクトに対して、描画速度を比較を行いましたが、結果、DoubleBufferedが有効な時にPaintイベントで取得するGraphicsオブジェクトに対して描画するのが一番、良さそうな結果となりました。
しかし、Paintイベント内で描画処理を行うには、描画する内容を変えたい時など、面倒なので、手動でダブルバッファによる描画方法を検討してみました。
手動のダブルバッファの方法については、このページ↓に分かりやすくまとまっています。
バッファリングされたグラフィックスを手動で描画する
http://msdn.microsoft.com/ja-jp/library/ka0yazs1%28v=vs.90%29.aspx
この手動のダブルバッファについて、前回と同様に描画速度を比較してみると、以下のようになりました。(BufferedGraphicsの部分が結果です。)
【描画速度の比較】
画像を描画する方法は、他のどの方法よりも高速に描画する事ができました。
【線の描画速度の比較】
線を描画する分には自動のDoubleBufferを使った方法をさほど変わらない結果となりました。
(処理時間にも多少ばらつきがあります。)
この画像描画、線の描画の両方を見ても、手動で行うダブルバッファの描画は効果的な用です。
参考までに、手動で行うダブルバッファの描画のサンプルプログラムを置いておきます。
BufferedGraphicsContext.zip (Visual Studio C# 2008 Express)
ピンバック: TechPress » PictureBoxの描画スピードを上げる
ピンバック: 【C#】Graphicsオブジェクトの違いによる描画速度の比較 | イメージングソリューション