日期:2014-05-17  浏览次数:20798 次

为什么我的label控件的背景不能和我设置的一致
我在一个form上放在一个picturebox,设置了背景,我的上面放了一个有内容的label,为什么我的label的背景
还是窗体的背景呢,我该如何修改呢?
有图有真相.

------解决方案--------------------
那个蓝色的背景可能是picturebox而不是窗体背景,使得Label透明色显示为窗体本身的颜色。Label透明只针对其父容器透明。
------解决方案--------------------
实在不行就只有重绘了:

private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            foreach (Control C in this.Controls)
            {
                if (C is Label)
                {
                    Label L = (Label)C;
                    L.Visible = false;
                    e.Graphics.DrawString(L.Text, L.Font, new
          SolidBrush(L.ForeColor), L.Left - pictureBox1.Left, L.Top - pictureBox1.Top);
                }
            }
        }

------解决方案--------------------
因为PictureBox不是容器控件,所以lable透明之后还是显示的form的背景,所以想想可以替代一下,将picturebox设为lable的父容器,用如下代码:

var pos = this.PointToScreen(label1.Location);
            pos = pictureBox1.PointToClient(pos);
            label1.Parent = pictureBox1;
            label1.Location = pos;
            label1.BackColor = Color.Transparent;