VB.NETでちらつきなく描画する方法
VB.NET(ほかの言語でもそうかもしれません)で描画がちらつく事がありますよね。
ダブルバッファが有名ですが、今回は違う方法です。
※「タイマーで消す→描画」の繰り返しでちらつくのに効果があります。
それ以外の時には効果があるかどうかは分かりません。
ーーーここからソースコード
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
'ちらつき防止
Me.SetStyle(ControlStyles.UserPaint, True)
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'Paintイベントを発生させる
Me.Refresh()
End Sub
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
Const iti As Integer = 20
Const Size As Integer = 15
'四角形を描画
e.Graphics.FillRectangle(Brushes.Red, iti, iti, Size, Size)
End Sub
ーーーソースコード終わり
これは、Timer1のTickイベントが発生するたびに
Me.Refresh()でForm1のPaintイベントを発生させる。
というものです。
これでちらつきはなくなったと思います。
追記:これは
AllPaintingInWmPaint、OptimizedDoubleBuffer、UserPaint
を有効にしないとちらつきます。
なのでソースコードに追加しておきました。
開発環境変更のお知らせ
今までVisual Basic 2010 Expressで開発していましたが、これからは
Visual Studio 2012 Express for Desktopで開発します。
これからも宜しくお願いします。
開発テストプログラムも作りました。