タイトル : Re: 画面のちらつきを抑えたい 投稿日 : 2009/09/02(Wed) 11:43 投稿者 : 魔界の仮面弁士
> 時計を描画するプログラムを作っているのですが、画面の更新時にちらつきが生じてしまいます。 ダブルバッファリングを有効にしてみてはいかがでしょうか。 http://www.atmarkit.co.jp/fdotnet/dotnettips/197doublebuf/doublebuf.html > Dim RedPen As Pen = New Pen(Color.Red, 2) 生成した RedPen や BlackPen 等が解放されていないようです。 Using ブロックで囲むか、使用後に RedPen.Dispose するようにしてください。 > Private Sub Timer1_Tick(ByVal sender As System.Object, _ > ByVal e As System.EventArgs) Handles Timer1.Tick > Me.Refresh() > End Sub Tick のたびに画面を再描画する必要があるかどうかを再検討してみてください。 秒針が動かなければ再描画は不要なのですから、Interval が小さい場合には、 「秒針の位置が変化したときのみ、再描画を要請する」方が良いかと思います。 次に、本当に Refresh による強制再描画が必要かどうかを検討してみてください。 今回のようなケースでは、Invalidate でも充分かと思いますよ。 (Invalidate / Update / Reresh の違いについて調べてみてください) Private previousTime As String = "" Private Sub Timer1_Tick(ByVal sender As Object, _ ByVal e As EventArgs) Handles Timer1.Tick Dim currentTime As String = Now().ToString("HHmmss") If previousTime <> currentTime Then previousTime = currentTime Me.Invalidate() End If End Sub |