C#实现Windows7窗体模糊{tx}_一步之遥_百度空间

从Vista到Windows7,AERO的{tx}都让人惊艳。

当然,我们在V或者7里面创建的WinApp程序,样式也是默认使用当前操作系统的。

but,仅仅是标题栏有{tx},窗体本身没有。

今天,发现QQ2010版本已经使用了窗体{tx},还是挺有意思的。。。

当然,我们用C#也可以实现窗体风格的{tx}【代码非常简单,不到10行】,先看图吧。

注意红线部分。

如图:




嘿嘿,三个太阳了,都祝福我吧。。。

以下,是Windows7自己的窗体{tx},以及控制设置:




但是,这是如何实现的呢?非常简单,打开任务管理器,找到dwm,也就是桌面窗口管理器。

都是依靠dwm实现的。。。如果你把此进程结束,那{tx}就消失了。。。

SO,图形接口肯定就在它背后。。。

我们打开system32目录,找到dwm.exe以及它的库。



接下来的事情就简单多了,在winform工程里引用之即可。。。

当然,我们常规的winform窗体并非透明的,而是这样的:

我们需要借助API来重写窗体,以达到透明化的目的。

---------------------------------

先导入

        [StructLayout(LayoutKind.Sequential)]
        public struct MARGINS
        {
            public int Left;
            public int Right;
            public int Top;
            public int Bottom;
        }

        [DllImport("dwmapi.dll", PreserveSig = false)]
        static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);

        [DllImport("dwmapi.dll", PreserveSig = false)]
        static extern bool DwmIsCompositionEnabled();

        protected override void OnLoad(EventArgs e)
        {
            if (DwmIsCompositionEnabled())
            {
                MARGINS m = new MARGINS();
                m.Right = m.Left = m.Top = this.Width + this.Height;
                DwmExtendFrameIntoClientArea(this.Handle, ref m);
            }
            base.OnLoad(e);
        }

        protected override void OnPaintBackground(PaintEventArgs e)
        {
            base.OnPaintBackground(e);
            if (DwmIsCompositionEnabled())
            {
                e.Graphics.Clear(Color.Black);
            }
        }

运行之。。。【其实还可以继续扩展,有兴趣的朋友自己研究】

略微有点瑕疵,你发现了吗?


遗憾的是,微软并未公开AERO的核心代码【我非常喜欢其中的模糊和3D{tx}】。。。

让人苦恼不已。。。

当然,{jd1}不是网上流传的所谓的高斯模糊算法,那种低效的算法充其量也就是用在Adobe 一些软件上,比如Photoshop之类的,做模糊{tx}羽化啥的,并不能用于实际工程的开发中,因为效率太低了。

希望微软有朝一日能够开放图形接口的实现,而不是给个API,让人不上不下的。。。

-------------------------------------------

说句心里话,.net framework都开源了,驱动都提供给Linux好几万行源代码。。。

不在乎图形库这一点点吧。。。当然,涉及到DX,我也死心了。



郑重声明:资讯 【C#实现Windows7窗体模糊{tx}_一步之遥_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——