我想把C#上的控件的背景变为完全透明的,可以看到下面控件的背景,不用说设置BackColor = Color.Transparent,这个只要控件叠加就看不到效果了。比如我在Form上添加一个Image,设置背景图片,再在Image上添加一个Label,我想要的效果是能看到Label区域后Image上的图片。哪位大哥最好给点代码,GDI+不是很熟悉,汗.....

解决方案 »

  1.   

    以前做过  重写paint事件 有段代码 网上去找找吧  
    你要自定义一个label控件
    然后重写paint  
    我做的是panel  可以显现透明效果
      

  2.   

    to vc_help能不能说的详细点,你说的和我想做的很相近。谢谢了。
      

  3.   

    办法当然还是有的.
    其实也很简单.
    把要做效果的LABEL设置隐藏
    按从底到前的顺序绘制到一张空白画布上
    将窗体背景设置为上面绘制的图即可
      

  4.   

    上面少打了几句办法当然还是有的. 
    其实也很简单. 
    把要做效果的LABEL设置隐藏 
    按从底到前的顺序将LABEL绘制到一张空白画布上(Label.DrawToBitmap方法)
    将窗体背景设置为上面绘制的图即可
      

  5.   

    这个问题我也遇到过,你的意思是不是在form 上加一个image,然后再在图片上面加一个label,然后使label背景变透明,好让label上的字体能显示在image上面,如果是这样的话private void Form1_Load(object sender, EventArgs e) 

      label1.BackColor = Color.Transparent; //把背景变透明
      pictureBox1.Controls.Add(label1); //把label1整到picturebox控件里,通俗的讲就是让后者把前者给包起来
      label1.Location = new Point(5, 10); //这个很重要,就是改变一下label的位置,后面的参数你自己随便定,如果不加这一条的话背景透明了但字体也会不见} 
      

  6.   

    把背景色设为一个极不常见的color,然后设计透明度,就OK了\
      

  7.   

    其实很简单
    this.label1.BackColor = System.Drawing.Color.Transparent;
    this.label1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;// System.Windows.Forms.FlatStyle.Popup;
      

  8.   

    你走运,我刚实现,不用GDI,你在InitializeComponent()方法里,手动修改Image.Controls.Add(this.lbVer);就可以 。就是让图片包含label
      

  9.   

    唉....
    还是结贴吧....上面所有的这些方法都是指定一下Parent就行了,还是没有实现实质上的透明度啊...