一起谈.NET技术,WPF 扩展玻璃效果(Aero Glass)

  Windows 7 操作系统默认具有一款玻璃效果主题(Aero Glass)。如果选择了该款主题,所有的应用程序标题栏都会处于玻璃透明效果(如下图)。这个功能是由Desktop Window Manager(DWM)服务支持的。

  默认情况下,我们编写的应用程序在Windows 7 中也只有标题栏和窗口框架会具备玻璃效果,其他区域仍是不透明状态(如下图)。如果想将程序整体都改为上图IE 窗口的效果,可以使用DWM API 将玻璃区域进行扩展。

  首先,从dwmapi.dll 中调取DwmExtendFrameIntoClientArea 方法。

[StructLayout(LayoutKind.Sequential)]public struct MARGINS{public int cxLeftWidth;      public int cxRightWidth;     public int cyTopHeight;      public int cyBottomHeight;   };

[DllImport("DwmApi.dll")]public static extern int DwmExtendFrameIntoClientArea(IntPtr hwnd,ref MARGINS pMarInset);

  创建方法ExtendAeroGlass 方法,可将WPF Window窗口的Aero Glass 区域扩展。

private void ExtendAeroGlass(Window window){try{// 为WPF程序获取窗口句柄IntPtr mainWindowPtr = new WindowInteropHelper(window).Handle;HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);        mainWindowSrc.CompositionTarget.BackgroundColor = Colors.Transparent;

// 设置MarginsMARGINS margins = new MARGINS();

// 扩展Aero Glassmargins.cxLeftWidth = -1;        margins.cxRightWidth = -1;        margins.cyTopHeight = -1;        margins.cyBottomHeight = -1;

int hr = DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins);if (hr < 0)        {MessageBox.Show("DwmExtendFrameIntoClientArea Failed");        }    }catch (DllNotFoundException)    {Application.Current.MainWindow.Background = Brushes.White;    }}

  简单制作一个WPF 界面。

<Window x:Class="WpfAeroGlass.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="350" Width="525">    <Grid x:Name="layout">        <Button x:Name="btn" Content="Button" Margin="191,66,202,211" />        <CheckBox x:Name="checkBox" Content="Extend AeroGlass"Click="CheckBox_Checked" Height="24" Width="121" />    </Grid></Window>

  补充CheckBox 点击事件,在其中启用ExtendAeroGlass 方法。

private void CheckBox_Checked(object sender, RoutedEventArgs e){if (checkBox.IsChecked.Value)    {this.Background = Brushes.Transparent;        ExtendAeroGlass(this);    }else{this.Background = Brushes.White;    }}

  演示效果

  运行程序后,默认界面状态。

  点击"Extend AeroGlass" 选框,界面中<Grid> 也将呈现玻璃效果。

  Windows API

  通过Windows API Code Pack 可以对Aero Glass 效果进行开启或关闭。在程序中加入Microsoft.WindowsAPICodePack.Shell 命名空间,调整AeroGlassCompositioinEnabled 完成开/关Aero Glass的效果。

GlassWindow.AeroGlassCompositionEnabled = checkBox.IsChecked.Value;

  源代码:WpfAeroGlass.zip

时间: 2024-10-24 17:04:45

一起谈.NET技术,WPF 扩展玻璃效果(Aero Glass)的相关文章

WPF 扩展玻璃效果(Aero Glass)

Windows 7 操作系统默认具有一款玻璃效果主题(Aero Glass).如果选择了该款主题,所有的应用程序标题栏都会处于玻璃透明效果(如下图).这个功能是由Desktop Window Manager(DWM)服务支持的. 默认情况下,我们编写的应用程序在Windows 7 中也只有标题栏和窗口框架会具备玻璃效果,其他区域仍是不透明状态(如下图).如果想将程序整体都改为上图IE 窗口的效果,可以使用DWM API 将玻璃区域进行扩展. 首先,从dwmapi.dll 中调取DwmExtend

一起谈.NET技术,由扩展方法引申出的编程思维

1. Helper大爆炸 .NET Framework为我们提供了丰富的类库,但是这并不是万能地,在大部分的时间,我们都需要为我们的项目特殊定制我们的通用类库. 常常,我们都可以构造一个类,类里封装一些方法.但是对于很多时候,我们并没有办法提取出这样一个类,举一个小例子,我们在很多时候,需要把url给保存到数据库里,作为一个唯一标识,但是我们知道url所占空间很大,如果用url来建立索引的话是非常耗费空间,而且影响效率的,那么我们最常用的办法就是把url做一个Hash来作为索引的替代品. 这个时

一起谈.NET技术,用优秀.NET界面控件 打造新潮界面效果

一直以来,做.NET共享小软件的界面一般采用IrisSkin这个比较不错的皮肤控件来美化界面效果,方便易用,界面效果也还可以.该控件开发应用比较方便,拖动控件到主界面,然后初始化地方添加一下代码即可: string skinFile = ConfigurationManager.AppSettings["SkinFile"];this.skinEngine1.SkinFile = Path.Combine(Application.StartupPath, skinFile); 主界面初

ps制作win7透明玻璃效果

这是以前在网上看到的一个教程,我自己修改了一下,感谢原作者分享教程. 效果图: 图层面板: 1.首先用圆角矩形工具新建一个圆角矩形,半径看自己喜好而定,我的是10. 2.为矩形添加投影外发光以及调节透明度,参数根据矩形大小而定,附上我自己的参数,图层透明度调节为16%,这样玻璃效果初步可见了. 3.这一步为玻璃制作边缘高亮,ctrl点击圆角矩形层,然后选择-修改-扩展,给它扩展一个半径.之后新建一个图层为选区描边,选择白色,1px,居中.这样,你可以看到玻璃效果出现了. 4.为玻璃添加纹理效果,

MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件

原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电影中表现未来主义的一种重要手法,现在俨然已经成为主流的用户界面技术. 多点触控显示屏现在成了新型智能手机和 Tablet 计算机的标准显示屏. 此外,它还可能在公共场所的计算机上普及,例如 Microsoft Surface 率先开发的网亭或桌面计算机. 实际存在的唯一不确定因素是多点触控在常规台式

Photoshop绘制透明玻璃效果按钮

在这一篇教程中,我将教给你怎样在photoshop中创建一个透明玻璃效果的干净的网页用按钮. 在这一篇教程中,我将教给你怎样在photoshop中创建一个透明玻璃效果的干净的网页用按钮. 这就是我们最终的结果.好了,让我们开始吧.在photoshop中新建文档,尺寸为430×430,白色背景. STEP-01 新建图层,命名为 "box".用圆角矩形工具 (U)创建一个圆角矩形.点击ctrl+回车创建选区,填充为白色. STEP-02 给这个形状创建图层属性-渐变叠加,内发光和描边.

PS滤镜制作液态玻璃效果

教程介绍使用滤镜制作液态玻璃效果.制作的时候几乎都用到各种滤镜效果,不同的滤镜制作的纹理及效果各有不同,只要能够好好的组合起来就可以制作出各种绚丽的效果. 最终效果 1.新建图像,用默认颜色执行[滤镜_渲染_分层云彩],并按[CTRL_F]重复若干次,效果如下图.  2.执行[滤镜_艺术效果_干画笔],设定如下左图.然后执行[滤镜_扭曲_极坐标],设定如下中图.按[CTRL_F]重复执行极坐标滤镜三四次,效果如下右图.分类: PS滤镜教程

Photoshop打造玻璃效果技巧

制作玻璃效果的中国印 最终效果图 1.新建一个文件,打开标志图片如图01所示,使用工具箱中的"魔棒工具"选择标志,将其拖拽到文件中,自动生成图层1,并将其填充黑色,效果如图02所示. 图01 图02 2.按Ctrl键单击图层1,调出标志选区,切换到通道面板,在面板底部单击"将选区存储为通道"按钮,将选区保存为通道,如图03所示. 图03 分类: PS入门教程

PS制作玻璃效果

  Photoshop是一个强大的图像处理软件,废话不多说,今天小编给大家分享PS制作玻璃效果详细步骤,希望大家喜欢. PS制作玻璃效果对比图 原图 效果图 第一步:将准备好的图片打开,用选框工具给图片框选中一部分,执行CTRL+J(如下图所示) 第二步:对剪切图层进行滤镜模糊--高斯模糊,数值不要太大3像素就可以(如下图所示) 第三步:对图片调整色彩平衡,数值为-40.+30.+15(如下图所示) 第四步:新建图层,选中玻璃的厚度进行渐变自定义填充黑白灰渐变(如下图所示) 第五步:执行CTRL