【第22期】观点:IT 行业加班,到底有没有价值?

C# Winform 变相实现背景透明

原创 2016年08月30日 14:51:36

C# Winform 变相实现背景透明

本人在写一个C# Winform项目时,窗体背景使用了背景图,但是窗体上的部分控件不支持背景透明,这样显得有些不好看,然后在Google时发现如下变相实现背景透明的方法。

但是有几点使用要求:
A. 主窗体或父容器等使用了背景图
B. 需要透明的控件支持背景图
C. 可能还有其他要求,暂未发现


实现代码

// 以下代码中,frm为主窗体,lv为需要透明的空间

// 封装一个图像对象,该对象即主窗体或父容器背景图片
Bitmap bmp = new Bitmap(this.BackgroundImage, this.Width, this.Height);

// 绘制矩形,定义你需要截取的图像起始位置和宽高
Rectangle r = new Rectangle(lv.Left, lv.Top, lv.Width, lv.Height);

// 按矩形尺寸和起始位置截取bm的一部分
bmp = bmp.Clone(r, System.Drawing.Imaging.PixelFormat.Undefined);

// 把截取到的图片设置为需要透明的控件背景,达到与主窗体背景完美契合的效果
lv.BackgroundImage = bmp;

如果是不支持背景透明的控件的话,那就用GDI+吧

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

背景透明的ListBox(C#.WinForm)

不知道大家有没有遇到过这种问题,C#中希望搞一个背景透明的ListBox,且文本居中,却发现VS里面自带的ListBox控件不支持背景透明,怎么办? 我们可以做一个自定义控件,重载里面的OnPain...

Winform中使Lable透明的C#代码

最近因为某个项目,开始使用.net了。其实我一直坚持认为编程语言就像信仰,一旦信奉就难以改变。MS那套体系我一直比较抵制,但无论哪种技术都有自己的独特优势,所以适时变通也未尝不可。 以下是一小段实现Winform中Lable标签透明的代码,谨以此作为本人.net之路的开端。 private void Form3_Load(object sender, EventArgs e) { pictureBox1.SendToBack();//pi

背景透明的ListBox(C#.WinForm)

不知道大家有没有遇到过这种问题,C#中希望搞一个背景透明的ListBox,且文本居中,却发现VS里面自带的ListBox控件不支持背景透明,怎么办? 我们可以做一个自定义控件,重载里面的OnPain...
  • bdstjk
  • bdstjk
  • 2011-11-24 13:18
  • 8025

c#Winform程序的toolStripButton自定义背景应用示例源码

C# Winform程序的toolStrip中toolStripButton的背景是蓝色的,如何改变背景及边框的颜色和样式呢? 实现此功能需要重写toolStripButton的Paint方法

背景透明的ListBox(C#.WinForm)

不知道大家有没有遇到过这种问题,C#中希望搞一个背景透明的ListBox,且文本居中,却发现VS里面自带的ListBox控件不支持背景透明,怎么办? 我们可以做一个自定义控件,重载里面的OnPaint函数,使ListBox支持背景透明 <textarea readonly name="code" class="cshar
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)