您的位置:首页 > 编程语言 > C#

C# Winform 变相实现背景透明

2016-08-30 14:51 267 查看

C# Winform 变相实现背景透明

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

但是有几点使用要求:

A. 主窗体或父容器等使用了背景图

B. 需要透明的控件支持背景图

C. 可能还有其他要求,暂未发现

实现代码

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

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

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

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

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


如果是不支持背景透明的控件的话,那就用GDI+吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息