スクロール移動時のラベルの描画について
- 題名: スクロール移動時のラベルの描画について
- 著者: わがし
- 日時: 2011/04/06 14:30:52
- ID: 28406
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: スクロール移動時のラベルの描画について
- 著者: 管理人
- URL: http://dobon.net/
- 日時: 2011/04/10 2:12:22
- ID: 28431
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: スクロール移動時のラベルの描画について
- 著者: わがし
- 日時: 2011/04/12 15:34:47
- ID: 28448
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
【解決したい問題】
いつも参考にさせて頂いております。
以下のようなプログラミングをしたところ、気になる現象が発生しています。
1.ピクチャーボックスに線を描画します。
2. 線の上に重なるようにラベルを追加します。
ラベルの背景色(BackColor)は透明(Transparent)に設定します。
3.フォーム上のパネルに上記のピクチャーボックスを追加します。
この時、ピクチャーボックスのサイズをパネルのサイズより大きく
設定します。
パネルのAutoScrollをTrueにしておきます。
1.〜3.の処理をボタンクリックイベントで実行します。
4.クリックイベント動作後、フォーム上のパネルのスクロールバーを
左右に動かしているとラベルを貼り付けた位置の線が消えて見える。
特に、ラベルがパネルの表示範囲外から表示範囲内になる場合に
現象が発生します。
スクロールバーの移動をやめれば、ラベルの背景の線を見えるように
なるのですが、スクロールバーを移動している際にも背景の線が見えるように
する方法があるのでしょうか?
今回のような現象については、コントロールの描画方法に影響されて
仕方のないことなのでしょうか?
なにか、そういった情報でも結構なので、ご提示くだされば助かります。
ボタンクリックイベント時のソースは以下のとおりです。
'---- 参考ソース
'フォーム上のパネルのスクロールバーの自動表示を有効とする。
Me.pnlBase.AutoScroll = True
'描画用ピクチャーボックスの設定
Dim picBase As PictureBox
picBase = New PictureBox
picBase.Width = 100
picBase.Height = 100
picBase.SizeMode = PictureBoxSizeMode.AutoSize
picBase.Image = New Bitmap(1000, 1000)
picBase.BackColor = Color.White
Dim g As Graphics
g = Graphics.FromImage(picBase.Image)
'描画用ピクチャーボックスに線を描画
g.DrawLine(Pens.Black, 10, 10, 500, 10)
g.DrawLine(Pens.Black, 310, 10, 310, 100)
'ラベルの設定
Dim lbl1 As Label
lbl1 = New Label
lbl1.Left = 300
lbl1.Top = 20
lbl1.Height = 20
lbl1.Width = 20
lbl1.BorderStyle = BorderStyle.FixedSingle
lbl1.BackColor = Color.Transparent
'ラベルをピクチャーボックスに追加
picBase.Controls.Add(lbl1)
'グラフィックスオブジェクト廃棄
g.Dispose()
'パネルにピクチャーボックスを追加
Me.pnlBase.Controls.Add(picBase)
'---- 参考ソース
以上
どうかよろしくお願いいたします。
【解決するために何をしたか】
フォームとパネルにダブルバッファの設定を行って確認をしましたが、
現象に変化はありませんでした。