C#学习笔记:设置label(标签)控件的背景颜色为透明

有时候,我们需要将控件的背景颜色设定为透明,比如说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;}
  • 1
  • 2
  • 3
  • 4

运行效果: 

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

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

        private void Form1_Load(object sender, EventArgs e){label1.BackColor = Color.Transparent;label1.Parent = pictureBox1;//pictureBox1.Controls.Add(label1);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

运行效果 

发现,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);//重新设定标签的位置,这个位置时相对于父控件的左上角}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

运行效果: 

背景终于透明了!

C#设置label(标签)控件的背景颜色为透明相关推荐

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

    有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件.那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答 ...

  2. C#学习笔记:设置label(标签)控件的背景颜色为透明

    有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件.那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答 ...

  3. python 如何删除frame 中的 label标签控件_玩转图形界面编程—解析Python小挑战No12(2)...

    <Python真好玩,教孩子学编程>小挑战[转载] 第十二章,玩转图形界面编程书籍<Python真好玩,教孩子学编程> 讲解了如何通过tkinter模块来完成图形交互界面 tk ...

  4. 怎样给Tab Control控件加上背景颜色或图片

    如果不懂Tab控件添加选项卡(属性页)的请看这篇文章:http://blog.csdn.net/qq_18297675/article/details/50991413 这里我就直接在添加好选项卡的基 ...

  5. 设置控件背景背景颜色为透明

    有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件.那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答 ...

  6. python标签控件是_Python 图形用户界面编程

    Python 图形用户界面编程python Python的默认GUI工具集是Tk,咱们能够经过Python的Tkinter接口来使用Tk.编程 咱们能够跟以前同样,经过import来引入Tk,能够先在 ...

  7. 1、Web 窗体的基本控件——标签控件(Label)

    1.Web 窗体的基本控件--标签控件(Label) 标签控件(Label) 前端 <%@ Page Language="C#" AutoEventWireup=" ...

  8. 设置ListCtrl列表控件其中某一行的字体和背景颜色

    设置ListCtrl列表控件其中某一行的字体和背景颜色,可以最终达到如下效果: 操作步骤如下所示: 1.先添加一个自定义消息 ON_NOTIFY ( NM_CUSTOMDRAW,IDC_V_H264_ ...

  9. Flutter Container、Center设置控件居中背景及其他属性

    Flutter Container.Center设置控件居中背景及其他属性 //控件可以居中Container(alignment: Alignment.bottomCenter,//设置控件内容的位 ...

最新文章

  1. java 修改wav文件头_使用Java聲音API從WAV文件中修剪開頭和結尾
  2. “我只需一个周末就可以构建出这个应用!”
  3. Redis的特性以及优势(附官网)
  4. 网管软件——Net Meter V3.3中文版
  5. 右键快捷VsCode
  6. 用fputc()函数以字符串形式写入字符到磁盘文件
  7. 开源协议神图介绍 MIT 与 Apache 等
  8. SpringClound介绍
  9. flutter从0到1构建大前端应用 pdf_推荐前端热门GitHub代码库「值得收藏」
  10. 数据结构实验 9.求逆序对数
  11. php.js 文件下载,使用JavaScript开始下载文件
  12. latex 基本用法(三)
  13. 计算机网络网络层实例例题
  14. c++输出字符串结尾部分中文乱码问题
  15. mysql可以用表情符号_让MySQL支持emoji表情符号存储
  16. f8恢复计算机忘记用户密码,win10系统电脑开机密码忘了的恢复方法
  17. 对数组做交换(swap)会发生什么?
  18. 计算机与网络之间是红叉,雨林木风win7系统网络连接出现红叉无法上网的解决办法...
  19. ubuntu系统安装安卓模拟器(Android SDK)的方法
  20. VMware修改主机名

热门文章

  1. mysql:ERROR 1366 (HY000): Incorrect string value: ‘\x80\xE6\x96\xB0‘ for column ‘name‘ at row 1
  2. 22-26岁四年你应该学会什么
  3. 无线通信-频偏的影响分析
  4. python3通过CookieJar与urllib模拟登陆人人网
  5. 【Linux】[万字] 详析 Linux磁盘文件管理系统、文件inode以及 软硬连接
  6. 求职招聘系统开发(APP、小程序、公众号)
  7. 软考高级系统架构设计师有什么价值?
  8. 电路分析 day01 一种使能控制电路
  9. 双十一闭眼入数码好物清单,值得入手的数码好物推荐
  10. 玲珑杯Round20