- PR -

描画処理のちらつきについて

1
投稿者投稿内容
ぶー
会議室デビュー日: 2007/09/15
投稿数: 19
投稿日時: 2008-03-28 23:41
いつもお世話になります。
VisualBasic2005についての質問なのですが、
VB6.0と違いVB2005にはshapeコントロールがない為、Graphicsのメソッドで
描画処理を行っているのですが、描画処理の際ちらついてしまいます。
この回避策の為、ダブルバッファプロパティ=Trueにして同様に試してみたのですが、
現象が改善されません。何かよい方法はないでしょうか?
下記に現在の処理の内容を示します。
@Panelコントロールに背景の図を描画します。その上にマウスによって動く
テキストボックスを配置してします。
Aテキストボックスを動かした場合、Panelに描いた図が消えてしまう為に
 PanelコントロールのPaintイベント時に描画をする処理をいれます。
B描画処理については、For 〜 Next処理にて
ハッチングした図形や、塗りつぶしの図形など100〜150個程度描く程度です。

ちらつきが生じるのは、テキストボックスを移動する際です。
以上。
ご教授の程宜しくお願いします。





ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-03-30 12:44
BringToFront で。
背景がテキストBOXを動かすたびにリアルタイムに更新される必要があるの?
無いなら、Bitmapに描いたものをPictureBoxに登録するのはダメなのかな?
テキストBOXを動かすと、テキストBOXだけがチラチラ微妙にちらつくのは
たぶんそちらのコードも同じだと思うが、問題としているのは、背景が再描画
されることにより、画面全体がチカチカするってことでしょう?

コード:

Public Class Form1

Private dcp As New DragContentsPanel

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dcp.Dock = DockStyle.Fill
Me.Controls.Add(dcp)

Me.Size = New Size(800, 600)

End Sub

Public Class DragContentsPanel : Inherits Panel

Private pic As New PictureBox
Private txt As New TextBox
Private WithEvents btn As New Button
Private tmr As New Timer

Public Sub New()
pic.Dock = DockStyle.Fill
txt.Dock = DockStyle.None
btn.Dock = DockStyle.None

txt.Left = 100
txt.Top = 100
txt.Width = 200
txt.Height = 24
txt.BackColor = Color.Aqua
txt.ForeColor = Color.Snow
txt.Text = "OKOKOKOKOKOKOOKOOKOOK"

btn.Text = "Move Text"


Me.Controls.Add(pic)
Me.Controls.Add(txt)
Me.Controls.Add(btn)

txt.BringToFront()
btn.BringToFront()

pic.BackgroundImage = Image.FromFile("C:\images\n_002.ico")


AddHandler btn.Click, AddressOf btn_Click

tmr.Interval = 100
AddHandler tmr.Tick, AddressOf tmr_Tick

End Sub

Private Sub btn_Click(ByVal o As Object, ByVal e As EventArgs)
tmr.Start()

End Sub

Private _X As Integer = 50

Private Sub tmr_Tick(ByVal o As Object, ByVal e As EventArgs)

If _X < 400 Then
_X += 1
txt.Left = _X
txt.Top = _X
Else
tmr.Stop()

End If
End Sub
End Class

End Class




訂正:[code]入れ忘れ。

[ メッセージ編集済み 編集者: ぴあちゃん 編集日時 2008-03-30 12:46 ]
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2008-03-30 16:28
引用:

ぶーさんの書き込み (2008-03-28 23:41) より:
この回避策の為、ダブルバッファプロパティ=Trueにして同様に試してみたのですが、



どのコントロールのダブルバッファを有効にしましたか?
Panelに書くならPanelのダブルバッファを有効にしなければいけません。

きちんとダブルバッファを有効にすれば、
ちらつき無く描画できますよ。

以前まとめたものがこちらにあります。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=11281&KLOG=25
1

スキルアップ/キャリアアップ(JOB@IT)