C#在PictureBox控件上绘制透明背景文字.
C#在PictureBox控件上绘制透明背景文字.
我们在窗体设计时在Form上添加一个PictureBox,并设置背景图片,再在PictureBox上叠加一个Label,但无论如何设置Label.BackColor = Color.Transparent,都会显示Form的背景着色。但想要的效果是能看到Label区域后Image上的图片。
如何使Label变为透明将文字显示在PictureBox上呢?
在设计时将Label放在一个PictureBox控件上,然后拖动PictureBox时发现,Label原地不动,其实PictureBox并不是容器尽管它继承Control有Controls属性。所以在设计上需要手工实现代码:
演示代码:
扫一扫加作者微信
我们在窗体设计时在Form上添加一个PictureBox,并设置背景图片,再在PictureBox上叠加一个Label,但无论如何设置Label.BackColor = Color.Transparent,都会显示Form的背景着色。但想要的效果是能看到Label区域后Image上的图片。
如何使Label变为透明将文字显示在PictureBox上呢?
在设计时将Label放在一个PictureBox控件上,然后拖动PictureBox时发现,Label原地不动,其实PictureBox并不是容器尽管它继承Control有Controls属性。所以在设计上需要手工实现代码:
//将Label控件加入PictureBox设为它的子控件
pictureBox1.Controls.Add(label1);
pictureBox1.Controls.Add(label1);
演示代码:
private void button6_Click(object sender, EventArgs e)
{
//将Label控件加入PictureBox设为它的子控件
pictureBox1.Controls.Add(label1);
label1.Text = "透明底色\n文本\nC/S框架网 www.csframework.com";
label1.BackColor = Color.Transparent;//透明底色
//Label在图片上显示的位置
Rectangle r = new Rectangle(10, 40, label1.Width, label1.Height);
label1.DrawToBitmap((Bitmap)pictureBox1.Image, r);
pictureBox1.Refresh();
}
{
//将Label控件加入PictureBox设为它的子控件
pictureBox1.Controls.Add(label1);
label1.Text = "透明底色\n文本\nC/S框架网 www.csframework.com";
label1.BackColor = Color.Transparent;//透明底色
//Label在图片上显示的位置
Rectangle r = new Rectangle(10, 40, label1.Width, label1.Height);
label1.DrawToBitmap((Bitmap)pictureBox1.Image, r);
pictureBox1.Refresh();
}
扫一扫加作者微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网