プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
フォームにあるラベルに文字を表示し、その文字をスクロールするプログラムを作成しました。
スクロールはできるのですが、スクロールする際に文字がちらついて(早い点滅のような感じ)しまいます。
どのようにすれば、ちらつきを無くすることができますか?
よろしくお願いします。
(VB2008にて作成)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.Label1.Text = "文字のスクロール"

'タイマーのインターバルで文字の進む速度が決まります
Timer1.Interval = 5
Timer1.Start()

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim objG As Graphics

objG = Label1.CreateGraphics()
'ここで一旦クリアしないと真っ黒になります
objG.Clear(Label1.BackColor)
'左端を決めて、文字を描画する
objG.DrawString(Label1.Text, Label1.Font, New SolidBrush(Label1.ForeColor), iLeft, 0)
'左端をずらす
iLeft += 1
If iLeft > Label1.Width Then
'右端までいったら戻す
iLeft = 0
End If
objG.Dispose()
End Sub

A 回答 (1件)

背景を塗りつぶしたときに、瞬間的にその色が出るのでちらついているのだと思います。


このようなちらつきは、ダブルバッファリングを用いることで抑えることができます。

1. Labelコントロールと同じサイズのBitmapを用意する。
2. 文字列の描画はBitmapに行う。
3. LabelにBitmapを描画する。

これで、背景の消去とテキストの描画はオフスクリーンで行われるため、画面がちらつかなくなると思います。
(ただ、ここまでするのなら、LabelコントロールではなくPictureBoxでもよさそうな気がしますけども。。。)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
PictureBoxにて文字のスクロールをしてみようと思うのですが、
具体的にどのようにしたらいいのでしょうか?

お礼日時:2010/01/04 12:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています