[开发笔记]-实现winform半透明毛玻璃效果

本文介绍了一种在Windows 7系统中实现窗口毛玻璃半透明效果的方法,并提供了C#代码示例。此效果依赖于Aero界面特性,在Windows 8系统上则无法呈现相同效果。

亲测win7下可用,win8下由于系统不支持Aero效果,所以效果不是半透明的。

代码:

博客园插入不了代码了。。。。。

复制代码
public partial class Form1 : Form
    {
        int en;

        public struct MARGINS
        {
            public int m_Left;
            public int m_Right;
            public int m_Top;
            public int m_Buttom;
        };

        [DllImport("dwmapi.dll")]
        private static extern void DwmIsCompositionEnabled(ref int enabledptr);
        [DllImport("dwmapi.dll")]
        private static extern void DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS margin);




        public Form1()
        {
            InitializeComponent();
            en = 0;
            MARGINS mg = new MARGINS(); //定义透明扩展区域的大小,这里全部-1,即全部透明
            mg.m_Buttom = -1;
            mg.m_Left = -1;
            mg.m_Right = -1;
            mg.m_Top = -1;

            //判断是否Vista及以上的系统
            if (System.Environment.OSVersion.Version.Major >= 6)
            {
                DwmIsCompositionEnabled(ref en);    //检测Aero是否为打开
                if (en > 0)
                {
                    DwmExtendFrameIntoClientArea(this.Handle, ref mg);   //透明
                }
                
            }
           
            this.Paint += new PaintEventHandler(Form1_Paint);

        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (en > 0)
            {
                Graphics g = e.Graphics;
                SolidBrush bsh = new SolidBrush(Color.Black);
                g.FillRectangle(bsh, this.ClientRectangle);
                bsh.Dispose();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
复制代码

 

win7下的效果为半透明毛玻璃效果,win8下的效果:

 

转载请注明出处。

本文转自 酷小孩 博客园博客,原文链接:http://www.cnblogs.com/babycool/p/3724842.html  ,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值