如何把C#控件的背景设为透明

我想把C#上的控件的背景变为完全透明的,可以看到下面控件的背景,不用说设置BackColor=Color.Transparent,这个只要控件叠加就看不到效果了。比如我在... 我想把C#上的控件的背景变为完全透明的,可以看到下面控件的背景,不用说设置BackColor = Color.Transparent,这个只要控件叠加就看不到效果了。比如我在Form上添加一个Image,设置背景图片,再在Image上添加一个Label,我想要的效果是能看到Label区域后Image上的图片。
我也是在想重绘控件来实现,但是如何获取控件后面那块区域的图像??试了很长时间了都没有解决。我的想法是获取控件后面的背景(重新绘制成一张图片),然后将此背景作为最上面控件的背景显示,不知道这样处理正确不正确。请指教,要是能上传点代码,感激不尽!

谢谢,设置BackColor = Color.Transparent成这样是不行的,还是能看到Label的背景,很难看。我想要重绘的东西。最好能给点代码。

很感谢 jonnysuen 提供的资料,但是那个上面是直接获取的Image的原图来绘制的,而我是想要将Label后面的图片被遮挡的一部分区域作为背景的,也就是说如何得到这部分区域,这就回到了我开始遇到的问题了。因为在Label后面不一定会是一个Image控件。所以我还要动态绘制这部分的区域作为图片,不知道我有没有说明白。
展开
 我来答
仍嫒邴晓凡
2019-08-24 · TA获得超过4078个赞
知道小有建树答主
回答量:3217
采纳率:27%
帮助的人:196万
展开全部
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace Webb.InstantReplay.PublicControls.UIControls
{
/**//// <summary>
/// Summary description for TransparentLabel2.
/// </summary>
public class TransparentLabel2 : System.Windows.Forms.PictureBox
{
//Fields
private Point _Location = new Point(0,0);
//Properties
public Point TextLocation
{
get
{
return this._Location;
}
set
{
this._Location = value;
}
}
[Browsable(true)]
new public string Text
{
get{return base.Text;}
set{base.Text = value;}
}
[Browsable(true)]
new public Font Font
{
get{return base.Font;}
set{base.Font = value;}
}
//
public TransparentLabel2()
{
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint (e);
SizeF m_size = e.Graphics.MeasureString(this.Text,this.Font);
e.Graphics.DrawString(this.Text,this.Font,Brushes.Black,new RectangleF(this._Location,m_size));
}
}
}
PictureBox,重载它的OnPaint方法,背景还是保持原来的不动。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式