winform中Label背景透明的解决方案

当Label控件在PictureBox控件上面时,我们想设置PictureBox控件上的Label控件透明,尝试设置Label的各种属性都无济于事。

现将本人的解决方案提供如下:

1) 新建一个PictureBox控件,名称是pbxImage
2) 新建一些Label控件,放在PictureBox上
3) 添加PictureBox的Paint事件
4) 添加如下代码:

private void pbxImage_Paint(object sender, PaintEventArgs e)
    {
      foreach (Control C in this.Controls)
      {
        if (C is Label)
        {
          Label L = (Label)C;
          L.Visible = false; //其实就是将原来的Label隐藏,在根据Label上的内容画出原内容
          e.Graphics.DrawString(L.Text, L.Font, new
SolidBrush(L.ForeColor), L.Location.X, L.Location.Y);
        }
      }
    }

 对应VB代码如下:

Private Sub pbxImage_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles pbxImage.Paint
        For Each C As Control In Me.Controls
            If TypeOf C Is Label Then
                Dim L As Label = DirectCast(C, Label)
                L.Visible = False
                e.Graphics.DrawString(L.Text, L.Font, New SolidBrush(L.ForeColor), L.Location.X, L.Location.Y)
            End If
        Next
    End Sub

 

posted on 2013-05-02 21:37  西夏普砖家  阅读(1267)  评论(0编辑  收藏  举报

导航