tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。