如何把C#控件的背景设为透明
我想把C#上的控件的背景变为完全透明的,可以看到下面控件的背景,不用说设置BackColor=Color.Transparent,这个只要控件叠加就看不到效果了。比如我在...
我想把C#上的控件的背景变为完全透明的,可以看到下面控件的背景,不用说设置BackColor = Color.Transparent,这个只要控件叠加就看不到效果了。比如我在Form上添加一个Image,设置背景图片,再在Image上添加一个Label,我想要的效果是能看到Label区域后Image上的图片。
我也是在想重绘控件来实现,但是如何获取控件后面那块区域的图像??试了很长时间了都没有解决。我的想法是获取控件后面的背景(重新绘制成一张图片),然后将此背景作为最上面控件的背景显示,不知道这样处理正确不正确。请指教,要是能上传点代码,感激不尽!
谢谢,设置BackColor = Color.Transparent成这样是不行的,还是能看到Label的背景,很难看。我想要重绘的东西。最好能给点代码。
很感谢 jonnysuen 提供的资料,但是那个上面是直接获取的Image的原图来绘制的,而我是想要将Label后面的图片被遮挡的一部分区域作为背景的,也就是说如何得到这部分区域,这就回到了我开始遇到的问题了。因为在Label后面不一定会是一个Image控件。所以我还要动态绘制这部分的区域作为图片,不知道我有没有说明白。 展开
我也是在想重绘控件来实现,但是如何获取控件后面那块区域的图像??试了很长时间了都没有解决。我的想法是获取控件后面的背景(重新绘制成一张图片),然后将此背景作为最上面控件的背景显示,不知道这样处理正确不正确。请指教,要是能上传点代码,感激不尽!
谢谢,设置BackColor = Color.Transparent成这样是不行的,还是能看到Label的背景,很难看。我想要重绘的东西。最好能给点代码。
很感谢 jonnysuen 提供的资料,但是那个上面是直接获取的Image的原图来绘制的,而我是想要将Label后面的图片被遮挡的一部分区域作为背景的,也就是说如何得到这部分区域,这就回到了我开始遇到的问题了。因为在Label后面不一定会是一个Image控件。所以我还要动态绘制这部分的区域作为图片,不知道我有没有说明白。 展开
6个回答
展开全部
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方法,背景还是保持原来的不动。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C#在PictureBox控件上绘制透明背景文字
http://hi.baidu.com/jonnysuen/blog/item/c0e2898ee3ef2ae7f11f3666.html
http://hi.baidu.com/jonnysuen/blog/item/c0e2898ee3ef2ae7f11f3666.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己绘制控件可以实现。
在参考下,Control.SetStyle 方法
在参考下,Control.SetStyle 方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Form6 f6 = new Form6();
pictureBox1.BackColor = Color.Transparent;
label1.BackColor = Color.Transparent;
label1.Location = new Point(10, 10);
f6.Controls.Add(pictureBox1);
pictureBox1.Controls.Add(label1);
f6.Show();
pictureBox1.BackColor = Color.Transparent;
label1.BackColor = Color.Transparent;
label1.Location = new Point(10, 10);
f6.Controls.Add(pictureBox1);
pictureBox1.Controls.Add(label1);
f6.Show();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询