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 cxLeftW
idth;

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;

// 设置Margins

MARGINS margins = new MARGINS();

// 扩展Aero Glass

margins.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-04 21:17:52

WPF 扩展玻璃效果(Aero Glass)的相关文章

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

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

Windows 10下开始菜单Aero Glass磨砂与透明效果的开启

1. 我们在win10中同时按下"Win+R" 然后会打开"运行"菜单: 2. 然后我们在运行框中我们输入 "regedit"启动注册表编辑器,需要管理员权限. 3. 然后我再定位到:HKEY_CURRENT_USER -> SOFTWARE -> Microsoft -> Windows -> CurrentVersion -> Themes -> Personalize 如下图所示细节如下所示 4. 然后我

DevExpress中透明玻璃效果

Aero玻璃效果 下图左是DevExpress无玻璃效果,图右是Windows自带玻璃效果. Windows Aero 是从 Windows Vista 开始使用的新型用户界面,透明玻璃感让用户一眼贯穿."Aero"为四个英文单字的首字母缩略字:Authentic(真实).Energetic(动感).Reflective(反射)及Open(开阔).意为Aero界面是具立体感.令人震撼.具透视感和阔大的用户界面.除了透明的接口外,Windows Aero也包含了实时缩略图.实时动画等窗口

适用于Win8/Win8.1的Aero Glass主题

  Aero 8和Aero 8.1是第三方为Win8和Win8.1开发的主题,安装后可以重拾Aero Glass毛玻璃效果,而且兼容其它Aero工具.开始菜单找回工具.这两款主题中均包含Windows 7默认主题:建筑.任务.风景.自然.场景(壁纸.音效.光标效果). 主题下载: Aero 8(仅适用于Win8,57.7MB) Aero 8.1(仅适用于Win8.1,62.7MB) 如何安装: 1.首先下载一个补丁:补丁下载 2.安装该补丁,不要重启; 3.将下载好的主题文件复制到C:Windo

ps制作win7透明玻璃效果

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

win7系统如何开启玻璃效果?

  1.首先,我们要确定,自己win7电脑中的显卡驱动是安装好的,因为显卡没有安装好,是无法启动玻璃效果的.如果确认,我们进入到下一步中. 2.我们单击打开win7的开始菜单,然后进入到控制面板界面中. 3.在打开的控制面板界面中,我们在右上角的搜索窗口中输入aero进行搜索,之后单击"在windows上启用或禁用透明玻璃效果",单击启用选项,然后保存修改即可. 完成设置之后,我们将自己的win7电脑重启一下,重启之后,桌面的玻璃效果就恢复了.

win7旗舰版没有透明玻璃效果该怎么解决?

  1.第一步首先要确定你的显卡驱动是不是已经安装好了.如果没有安装是无法启用透明玻璃效果的. 2.如果安装了显卡驱动了还是没有,接下来我们打开控制面板. 3.在控制面板右上角里输入aero进行搜索. 4.单击"在windows上启用或禁用透明玻璃效果" 5.单击启用选项,然后保存修改. 6.如果做到这一步仍然不行,最后我们还打开控制面板,搜索aero,单击"检查并修复透明和其它效果存在的问题" 7.单击下一步 8.等待检查结果,一般会解决这个问题

win7旗舰版没有透明玻璃效果怎么办

  有时候我们会遇到装好的win7旗舰版没有透明玻璃的效果,那我们要如何开启呢,接下来就一同跟小编来解决这个问题吧. 1.第一步首先要确定你的显卡驱动是不是已经安装好了.如果没有安装是无法启用透明玻璃效果的. 2.如果安装了显卡驱动了还是没有,接下来我们打开控制面板. 3.在控制面板右上角里输入aero进行搜索. 4.单击"在windows上启用或禁用透明玻璃效果" 5.单击启用选项,然后保存修改. 6.如果做到这一步仍然不行,最后我们还打开控制面板,搜索aero,单击"检查

PowerShell及命令行打开Windows Server 2008玻璃特效Aero

PowerShell及命令行打开Windows Server 2008玻璃特效Aero操作如下: 打开Powershell 后输入以下命令.(可按微标+2运行,未更改任务栏图标.)1. 安装桌面体验servermanagercmd -install http://www.aliyun.com/zixun/aggregation/16493.html">Desktop-Experience 2. 安装完成后重新启动,执行.shutdown -r -t 0 3. 更改Theme服务为自动运行s