C#控件背景透明的几种解决方案

C#控件背景透明的几种解决方案

作者:肖凤斌 E-mail:binsweet@gmail.com


已经很少做winform程序了,最新参与了一个小项目,遇到了控件背景透明的功能要求,特在此总结一下,供有需要的同行参考。

0、背景透明的概念和分类

背景透明是啥意思呢,就是背景透明。哈哈,废话了。其实你想过没有,要求不一样,实现的难道和技术手段也不一样。

最基本的就是不显示控件自己的背景,那,那显示谁的背景?

背景透明后,透过去显示谁,也就是说后面的谁不透明,这是问题的关键,换句话说,透明控件的parent是一个还是多个。

1、简单的背景透明,parent是一个的情况

a、自然透明,如图label1

实现:把控件背景色设置成窗口背景色

b、需要把picture设为parent才能透明的label2

实现:this.label2.Parent = this.pictureBox1;

c、本身就是label,只不过设置了Image属性,相当于加了背景图,自然也背景透明

this.label3.Image = Image.FromFile("xfb.jpg");

d、普通的label是不能跨控件透明的

小结:对于背景是单一控件来说,背景透明都好实现,但是对背景是多对象来说说,要实现背景透明就比较难。

2、背景是多个控件背景的透明

说实话,很少有这种要求,更多的,是下面第三中情况。

3、透明文字,半透明背景,最后后的背景任意



这个效果类似于千千静听的桌面歌词,文字背景是全透明的,可以设置一个带颜色和透明度的背景。

其实实现很简单,原理就是用了两个窗口,文字是一个透明窗口,带颜色和透明度的背景是一个打底窗口,应用的时候把这两个窗口的不要的属性都去掉,如边框,状态栏图标等,最后就是设置好两个窗口的大小和位置以及层级关系就Ok了。

文字窗口背景透明this.TransparencyKey = this.BackColor; 显示文字 直接在 paint事件中drawstring

带颜色和透明度背景窗口:直接用 backcolor 和 Opacity



  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值