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

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

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

很感谢 jonnysuen 提供的资料,但是那个上面是直接获取的Image的原图来绘制的,而我是想要将Label后面的图片被遮挡的一部分区域作为背景的,也就是说如何得到这部分区域,这就回到了我开始遇到的问题了。因为在Label后面不一定会是一个Image控件。所以我还要动态绘制这部分的区域作为图片,不知道我有没有说明白。
展开
 我来答
roovent
2009-08-18 · TA获得超过273个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:130万
展开全部

不知道你要的是不是这种效果的,如果是的话那就的确是把BackColor设为Transparent。 

如果不是这种效果你可以hi我说下具体要求。

馒头上线了
推荐于2016-01-01 · TA获得超过221个赞
知道小有建树答主
回答量:162
采纳率:66%
帮助的人:88.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方法,背景还是保持原来的不动。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孙中吕
2009-08-18 · 专注C/S架构开发框架技术研究
孙中吕
采纳数:435 获赞数:788

向TA提问 私信TA
展开全部
C#在PictureBox控件上绘制透明背景文字
http://hi.baidu.com/jonnysuen/blog/item/c0e2898ee3ef2ae7f11f3666.html
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
uzdust
2009-08-18
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
自己绘制控件可以实现。
在参考下,Control.SetStyle 方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柴关贵深0m
2009-08-18 · TA获得超过1142个赞
知道小有建树答主
回答量:1270
采纳率:0%
帮助的人:0
展开全部
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();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式