C# Panel半透明

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

实现下图中panel控件半透明效果在这里插入图片描述之前在别的项目用无边框窗体的Opacity属性实现过这种效果;现在想就一个窗体中实现,网上搜到用户控件的方法尝试了下,透明可以实现但是里面的button按钮无法实现透明;网上案例大部分提到利用颜色达到透明效果这种只是颜色透明;也搜到使用 Transparent 在碰到窗体有 PictureBox 控件时无法通明显示 PictureBox 的画面;搜到这里我想到 PictureBox 主要是放图片,而 Panel 也可以放图片,并且 Panel 控件是用来分组,它可以和内部的控件形成父子层关系。
基本思路:
用两个Panel控件组成父子关系即一个包含在另一个里面,两个BorderColor 属性都设置成 Transparent 达到子 Panel 控件在父 Panel 控件中全透明,这时候给父 Panel 控件设置一个背景图片,再给子 Panel 控件弄一个半通明图片的背景图。
下图是实现效果:
在这里插入图片描述


提示:这种方式就是用窗体控件自带的属性弄的,没什么代码,下面是我中途碰到的问题的解决代码

Panel 设置 Transparent 属性之后会出现闪烁情况

解决方法:创建一个NewPanel类,把下面代码黏贴到类中
代码如下(示例):

//窗体设计代码中将this.panel1 = new System.Windows.Forms.Panel(); 替换成 NewPanel(); 方式panel控件闪烁
    public class NewPanel : Panel
    {
        public NewPanel()
        {
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            this.SetStyle(ControlStyles.UserPaint, true);
        }
    }

按注释代码,找到窗体设计代码将Panel修改成NewPaenl
在这里插入图片描述

窗体加载防闪烁代码优化

我之前用的窗体加载防闪烁代码,必须在每个窗体中复制防闪烁的代码

代码如下(示例):


        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }

按照上面类的写进行了一下优化
代码如下(示例):

public class NewForm : Form
    {
        public NewForm()
        {

        }
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }
    }

优化后项目中那个窗体要加防闪烁功能采用继承即可实现
在这里插入图片描述


总结

以上就是今天要讲的内容,本文仅仅简单介绍了BorderColor中Transparent 的使用,中途网上搜索的时候被颜色透明,自定义控件,用户控件等很多五花八门的答案给迷惑了。有时候还是要静下心捋一捋,解决问题的思路很重要。
用户控件和组件类实现控件半透明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值