DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ラベルを点滅させる処理で発生する画面のちらつきをおさえたい。

環境/言語:[Windows XP/VB2008]
分類:[.NET]

初めて利用させていただきます。
 初めて半年の素人ですが、宜しくお願い致します。

 教えて戴きたい内容ですが、
 パネルに複数のラベルとラインを配置し、ファイル読み込みで得た情報をもとに、
 バックカラーを変更して、ラベルとラインを点滅させる処理を作成しています。
 
 
初期表示は、ラベルのバックカラーを「Color.Transparent」に設定してあります。
ファイル読み込みで点滅の情報を得たら、"赤→透明"の点滅をさせようと
しています。(ラインの場合は"赤→緑"の点滅をさせる。)
しかし、ラベルを10個位点滅させようとすると、すでに画面がちらつき始めて
しまいます。ラベルとラインが全体で500個位あるのですが、このちらつきを抑える
方法が分かりません。
 
透明にする処理が影響しているのかと思い、"赤→緑"の点滅に変更してみまし
たが、ちらつき始める個数が変化しただけで変わりませんでした。

ご教授を宜しくお願いします。


 
■No26729に返信(ゆきさんの記事)
300個位まで試したけど、最初のラベルの色変更から300個目の色変更までの
タイムラグが見た目に感じられるようになったくらいで、ちらつきは発生しな
かったですね。
    Private m_Color As Color
    Private m_Color1 As Color
    Private m_Color2 As Color

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim ctl As Control
        If m_Color = m_Color1 Then
            m_Color = m_Color2
        Else
            m_Color = m_Color1
        End If

        For Each ctl In Me.Controls
            If TypeOf ctl Is Label Then
                DirectCast(ctl, Label).BackColor = m_Color
            End If
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        m_Color1 = Color.Transparent
        m_Color2 = Color.Red
        Me.Timer1.Interval = 1000
        Me.Timer1.Start()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        m_Color1 = Color.Green
        m_Color2 = Color.Red
    End Sub

DOBON.NET | プログラミング道 | プログラミング掲示板