C# 如何设置label(标签)控件的背景颜色为透明

作者:rainbow70626 时间:2023-05-27 11:03:00 

有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件。那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答案是否定的。看似很简单,其实不然,在实际操作过程中,很让人抓狂,抓狂到让你怀疑人生。

关于透明

首先要解释一下,什么叫做透明。在C#这里,透明就是指透过控件的背景,可以看到其父控件(容器)表面的颜色。所谓的透明,其实就是将父控件表面的颜色设定为自己的背景颜色。

设置控件背景颜色为透明的步骤和注意事项:

以pictureBox上的label控件为例,设置label的背景为透明,可以看到pictureBoxs上的图片。 
(1)首先,将label控件的背景颜色设为透明(Transparent)。在属性窗口中设置,或者在代码中设置:label1.BackColor=Color.Transparent; 
(2)其次,将label控件的Parent属性设定为picturebox,也就是说,将pictureBox设为label的父控件。在代码中写上:label1.Parent=pictureBox1;或者pictureBox1.Controls.Add(label1); 
(3)最后,调整控件的位置。将label控件的位置(Location)重新设定一下,使其显示在pictureBox中合适的位置:这一步是非常重要的!这常常是出问题的地方,如果Location属性没设置好,有可能看不到标签。 

注意事项: 

(1)为什么将label控件的背景设为透明,透过背景看到的不是pictureBox的颜色,而是窗体的颜色? 
其原因是:label控件的父控件默认是窗体,当将label的背景颜色设为透明之后,看到的将会是窗体的颜色,即使你已经把label控件拖到pictureBox控件上面也无济于事。解决方法是,重新设置label的Parent属性,使label控件的父控件为pictureBox。 

(2)为什么将label的Parent属性设置为pictureBox之后,运行时发现label控件不见了,或者显示的位置不在拖放的位置? 
原因是: 

label等控件默认的父控件是窗体,一开始的时候,location属性也是相对于窗体的。当运行时,label父控件改为了PictureBox,那么location属性也将是改为相对于PictureBox。这里是重点,这是为什么标签不见的原因:加了label1.parent=pictureBox1这段代码之后,label的位置基准就变为PictureBox的了,但location的数值没有变,当location的数值比PictureBox的size还大的时候,label不会显示。因此,在设置完label1.parent=PictureBox1之后,还要设置location属性,比如label1.location=new point(0,0)。这时label显示在PictureBox的左上角。这是关于位置基准的问题,控件以谁为父亲,它的位置基准就一父控件的左上角为基准。在切换父控件的时候,要注意把位置也得调一下。同样是location=(100,100),以不同的控件作为父控件,显示的位置是不一样的。也就是说,显示位置不但跟数值有关,还跟选择的基准有关。

例子

在窗体上放一个pictureBox控件,并在其Image属性中放入一张图片,然后在pictureBox上拖放一个label控件。显示效果:pictureBox上显示图片,上面的label控件的背景是透明的,透过label控件可以看到pictureBox上的图片。 
(1)仅仅将label的背景设为透明


private void Form1_Load(object sender, EventArgs e)
{
  label1.BackColor = Color.Transparent;
}

运行效果:

C# 如何设置label(标签)控件的背景颜色为透明

可以看到,label的背景是窗体的颜色。

(2)不仅设置背景透明,还将label的Parent属性改为pictureBox。


private void Form1_Load(object sender, EventArgs e)
{
     label1.BackColor = Color.Transparent;
     label1.Parent = pictureBox1;
     //pictureBox1.Controls.Add(label1);
}

运行效果 :

C# 如何设置label(标签)控件的背景颜色为透明

发现,label控件不见了。

(3)不仅设置背景透明,将label的Parent属性改为pictureBox,还把Location属性重新设置为合适的值。


private void Form1_Load(object sender, EventArgs e)
{
     label1.BackColor = Color.Transparent;
     label1.Parent = pictureBox1;//将pictureBox1设为标签的父控件
     //pictureBox1.Controls.Add(label1);
     label1.Location = new Point(80, 80);//重新设定标签的位置,这个位置时相对于父控件的左上角
}

运行效果:

C# 如何设置label(标签)控件的背景颜色为透明

背景终于透明了!

来源:https://www.cnblogs.com/rainbow70626/p/13308481.html

标签:c#,label,控件,标签,背景色
0
投稿

猜你喜欢

  • SpringBoot深入分析讲解监听器模式上

    2022-06-25 21:04:04
  • C#使用dynamic类型访问JObject对象

    2022-03-01 13:05:28
  • 谈谈HttpClient使用详解

    2022-11-03 08:19:02
  • Java中stream处理中map与flatMap的比较和使用案例

    2023-11-21 02:27:53
  • java的多线程高并发详解

    2022-06-28 10:12:06
  • java操作excel表格详解

    2021-08-20 14:35:46
  • Java多态中动态绑定原理解析

    2021-08-01 06:39:23
  • SQL语句删除和添加外键、主键的方法

    2023-04-16 22:18:35
  • C#设置软件开机自动运行的方法(修改注册表)

    2022-08-27 21:05:46
  • 详解spring注解式参数校验

    2023-05-08 15:28:52
  • 解析HikariCP一百行代码轻松掌握多线程

    2023-03-21 19:11:00
  • Android RecyclerView基本使用详解

    2023-07-24 21:13:30
  • java模拟http的Get/Post请求,并设置ip与port代理的方法

    2021-11-25 11:30:57
  • Java队列篇之实现数组模拟队列及可复用环形队列详解

    2021-09-12 17:49:42
  • 在Android模拟器上模拟GPS功能总是null的解决方法

    2023-09-16 16:51:15
  • mybatis中foreach嵌套if标签方式

    2023-11-20 23:11:05
  • java 集合工具类Collections及Comparable和Comparator排序详解

    2023-04-29 03:42:06
  • Java 常量与变量的区别详细介绍

    2023-03-09 13:30:48
  • Grow heap (frag case) 堆内存过大的深入解析

    2023-04-28 15:30:27
  • Springboot整合通用mapper过程解析

    2023-08-24 09:32:25
  • asp之家 软件编程 m.aspxhome.com