网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

WPF扩展玻璃效果(AeroGlass)源码下载

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

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

GlassExample

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

Notepad

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

  1. [StructLayout(LayoutKind.Sequential)] 
  2. public struct MARGINS 
  3.     public int cxLeftWidth;       
  4.     public int cxRightWidth;      
  5.     public int cyTopHeight;       
  6.     public int cyBottomHeight;    
  7. }; 
  8.  
  9. [DllImport("DwmApi.dll")] 
  10. public static extern int DwmExtendFrameIntoClientArea( 
  11.     IntPtr hwnd, 
  12.     ref MARGINS pMarInset); 

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

  1. private void ExtendAeroGlass(Window window) 
  2.     try 
  3.     { 
  4.         // 为WPF程序获取窗口句柄 
  5.          IntPtr mainWindowPtr = new WindowInteropHelper(window).Handle; 
  6.         HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr); 
  7.         mainWindowSrc.CompositionTarget.BackgroundColor = Colors.Transparent; 
  8.  
  9.         // 设置Margins 
  10.         MARGINS margins = new MARGINS(); 
  11.  
  12.         // 扩展Aero Glass 
  13.         margins.cxLeftWidth = -1; 
  14.         margins.cxRightWidth = -1; 
  15.         margins.cyTopHeight = -1; 
  16.         margins.cyBottomHeight = -1; 
  17.  
  18.         int hr = DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins); 
  19.         if (hr < 0) 
  20.         { 
  21.             MessageBox.Show("DwmExtendFrameIntoClientArea Failed"); 
  22.         } 
  23.     } 
  24.     catch (DllNotFoundException) 
  25.     { 
  26.         Application.Current.MainWindow.Background = Brushes.White; 
  27.     } 

简单制作一个WPF 界面。

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

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

  1. private void CheckBox_Checked(object sender, RoutedEventArgs e) 
  2.     if (checkBox.IsChecked.Value) 
  3.     { 
  4.         this.Background = Brushes.Transparent; 
  5.         ExtendAeroGlass(this); 
  6.     } 
  7.     else 
  8.     { 
  9.         this.Background = Brushes.White; 
  10.     } 

 

演示效果

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

Default

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

AllGlass

Windows API

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

  1. GlassWindow.AeroGlassCompositionEnabled = checkBox.IsChecked.Value; 
  • 下一篇资讯: VisualStudio实用功能总结
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师