トップ回答者
2つのラベルを透過にして重る→解決しました(^人^)感謝♪

質問
-
学校でVB6をちょっとかじっただけの超初心者です。 初歩的な用語でお返事頂けるとありがたいです。 おねがいします。
■2つのラベルを透過にして重ねたいのですが、ラベルが重なり合うと、下にあるラベルは欠けてしまいます。
VB6では、透過の設定にすれば重ねられたのですが、Visual Basic 2005 Express Editionでは、BackColorをtransparentにしても、フォームが透けてしまってダメです。つまり、下のラベルまで欠けてしまいます。
フォームのスペースの都合上、どうしてもラベルを重ねないとなりません。
何か、解決法があるのでしょうか? どうか教えてください。お願いします。
回答
-
k_kazu です。
解決されたようですが、Label を 非表示にして Form の Paint イベントの中で Labelの 文字を描画すると言う方法もあります。
デザイン画面でラベルの位置を調整できるので便利だと思います。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Visible = False
Label2.Visible = False
End SubPrivate Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
DrawLabel(Label1, e)
DrawLabel(Label2, e)
End SubPrivate Sub DrawLabel(ByVal label As Label, ByVal e As PaintEventArgs)
Dim labelBursh As New SolidBrush(label.ForeColor)
e.Graphics.DrawString(label.Text, label.Font, labelBursh, label.Left, label.Top)
labelBursh.Dispose()
End Sub
すべての返信
-
k_kazu です。
解決されたようですが、Label を 非表示にして Form の Paint イベントの中で Labelの 文字を描画すると言う方法もあります。
デザイン画面でラベルの位置を調整できるので便利だと思います。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Visible = False
Label2.Visible = False
End SubPrivate Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
DrawLabel(Label1, e)
DrawLabel(Label2, e)
End SubPrivate Sub DrawLabel(ByVal label As Label, ByVal e As PaintEventArgs)
Dim labelBursh As New SolidBrush(label.ForeColor)
e.Graphics.DrawString(label.Text, label.Font, labelBursh, label.Left, label.Top)
labelBursh.Dispose()
End Sub