分類:[.NET 全般]
VB.NETを使った画像処理プログラムを書いています。
いま、フォーム上にPictureBox1とChart1が配置してあるとします。
このPictureBox1にラインが描画されており、
これをマウスで操作すると、そのライン位置の画像データが抽出され、
あるフィルター処理がかけられた後に
そのデータがChart1に表示されるというプログラムを書いています。
普通に書くと
Sub PictureBox1_MouseMove
ライン位置の設定
PictureBox1.Invalidate
Chart1の描画処理
End Sub
Sub PictureBox1_Paint
ラインの描画
End Sub
となります。
これでも動作はするのですが、
Chart1の描画処理が非常に重いため、
カーソルの動きがカクカクしてしまいます。
そのため、
Sub PictureBox1_MouseMove
ライン位置の設定
PictureBox1.Invalidate
End Sub
Sub PictureBox1_Paint
ラインの描画
Chart1の描画処理
End Sub
のように改良しました。
こうすることで、ある程度レイテンシーを持たせて
Chart1の描画処理を行うため、Paint処理が軽くなります。
ただし、これでもやはりフィルター処理によっては重くなってしまいます。
ラインの描画はリアルタイムで表示してほしいですが、
Chart1の表示は多少は遅れがあっても良いと考えています。
そのため、Chart1のInvalidateだけを少し間隔をおくとかっていう設定はないでしょうか?
|