Windows 7 扩展玻璃效果(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; // 设置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
转载于:https://blog.51cto.com/186067/1280594
Windows 7 扩展玻璃效果(Aero Glass)相关推荐
- DevExpress中透明玻璃效果
Aero玻璃效果 下图左是DevExpress无玻璃效果,图右是Windows自带玻璃效果. Windows Aero 是从 Windows Vista 开始使用的新型用户界面,透明玻璃感让用户一眼贯 ...
- C#迅雷七窗体特效,使用DWM实现Aero Glass效果
从Windows Vista开始,Aero Glass效果被应用在了Home Premium以上的系统中(Home Basic不具有该效果).这种效果是由DWM(Desktop Window Mana ...
- 【转】MFC 迅雷七窗体特效,使用DWM实现Aero Glass效果
从Windows Vista开始,Aero Glass效果被应用在了Home Premium以上的系统中(Home Basic不具有该效果).这种效果是由DWM(Desktop Window Mana ...
- java aero_java – 结合Aero Glass效果和SWT
作为一个宠物项目,我一直在玩将Aero Glass效果集成到我的SWT应用程序中的概念. Łukasz Milewski has an excellent blog post解释了如何实现这一点,这几 ...
- win7下 窗体玻璃效果的实现和WindowStyle None模式下的移动 wpf
这些技术在上一篇文章的介绍的软件里有用到,现在单独摘出来说明一下. 添加 using System.Runtime.InteropServices; [StructLayout(LayoutKind. ...
- QT-磨砂玻璃效果实现
QT-磨砂玻璃效果实现 前言 开始 前言 接触QT都挺多年了,今天开始打算把这几年攒下的QT资源记录下来,留个存档吧.今天记录的是windows下(只有win vista|win7支持)的玻璃磨砂效果 ...
- WPF Aero Glass Window
WPF Aero Glass Window 原文:WPF Aero Glass Window 用法 Win7 DwmSetWindowAttribute function Win10 SetWindo ...
- 计算机的aero界面是一种,Win8桌面UI大变脸 去除Aero Glass等特效
在Windows 8话题中,谈论最多的莫过于其Metro用户界面和触摸操作为重点的设计,很多人认为微软这一步跨地太大了.今天,在官方博客中,微软介绍了改进Windows 8用户界面的更多决定. 首先, ...
- shader入门精要读书笔记23 高级纹理-渲染纹理-镜子效果、玻璃效果
一.前言 现代GPU允许我们把整个三维场景目标渲染到一个中间缓冲中,即渲染目标纹理(RTT). 多重渲染目标(MRT),这种技术指的是GPU允许我们把场景同时渲染到多个渲染目标纹理中,而不再需要为每个 ...
最新文章
- 吴恩达:AI是时候从大数据转向「小数据」了
- python程序设计狄光智_Python程序设计
- python爬取贴吧所有帖子-python爬取贴吧帖子
- yii框架phpexcel
- 一个openMP编程处理图像的示例
- Nodejs留言板案例总结
- mysql 安装1364_安装完MySQL,在配置最后一步报错error Nr.1364
- IntObjectHashMap和HashMap的区别?
- MySQL双主(master-master)补充
- 算法:时间、空间复杂度
- vue项目中配置eslint和prettier
- Web前端 ---入门教学
- win10无线网卡黄色感叹号
- 【英雄联盟】关于我是如何打上超凡大师的,ADC键位设置
- GUI用户图形界面:GUILayout控件及使用例子
- docker系统中/var/lib/docker/overlay2
- Java阿凯_Java-7 面向对象(上)
- 阿里云被攻击用高防CDN的效果如何?
- ISP—去马赛克和颜色空间变换对图像噪声的影响
- 【数学】【裂项相消】Integration-牛客