[计算机]将玻璃框扩展到wpf应用程序

[计算机]将玻璃框扩展到wpf应用程序

ID:24474122

大小:229.50 KB

页数:4页

时间:2018-11-14

[计算机]将玻璃框扩展到wpf应用程序_第1页
[计算机]将玻璃框扩展到wpf应用程序_第2页
[计算机]将玻璃框扩展到wpf应用程序_第3页
[计算机]将玻璃框扩展到wpf应用程序_第4页
资源描述:

《[计算机]将玻璃框扩展到wpf应用程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、本主题演示如何将WindowsVista玻璃框扩展至WindowsPresentationFoundation(WPF)应用程序的工作区。说明:此示例仅在运行已启用玻璃效果的桌面窗口管理器(DWM)的WindowsVista计算机上才会起作用。WindowsVistaHomeBasic版本不支持透明玻璃效果。通常利用透明玻璃效果呈现的区域在其他版本的WindowsVista上呈现为不透明。 示例下面的示例演示一个已扩展到InternetExplorer7地址栏的玻璃框。InternetExplore

2、r,扩展的玻璃框位于地址栏后。若要在WPF应用程序上扩展玻璃框,需要访问非托管的API。下面的代码示例为扩展玻璃框工作区所需的两个API执行平台调用(pinvoke)。每个API都是在名为NonClientRegionAPI的类中声明的。C#复制代码[StructLayout(LayoutKind.Sequential)]publicstructMARGINS{publicintcxLeftWidth;//widthofleftborderthatretainsitssizepublicintcxR

3、ightWidth;//widthofrightborderthatretainsitssizepublicintcyTopHeight;//heightoftopborderthatretainsitssizepublicintcyBottomHeight;//heightofbottomborderthatretainsitssize};[DllImport("DwmApi.dll")]publicstaticexternintDwmExtendFrameIntoClientArea(IntPt

4、rhwnd,refMARGINSpMarInset);DwmExtendFrameIntoClientArea是用于将框扩展到工作区中的DWM函数。它有两个参数,一个窗口句柄,一个MARGINS结构。MARGINS用于告知DWM框扩展到工作区中时延伸的程度。若要使用DwmExtendFrameIntoClientArea函数,必须获取一个窗口句柄。在WPF中,可以通过HwndSource的Handle属性获取窗口句柄。在下面的示例中,框扩展至窗口的Loaded事件的工作区。C#复制代码voidOnL

5、oaded(objectsender,RoutedEventArgse){try{//ObtainthewindowhandleforWPFapplicationIntPtrmainWindowPtr=newWindowInteropHelper(this).Handle;HwndSourcemainWindowSrc=HwndSource.FromHwnd(mainWindowPtr);mainWindowSrc.CompositionTarget.BackgroundColor=Color.Fr

6、omArgb(0,0,0,0);//GetSystemDpiSystem.Drawing.Graphicsdesktop=System.Drawing.Graphics.FromHwnd(mainWindowPtr);floatDesktopDpiX=desktop.DpiX;floatDesktopDpiY=desktop.DpiY;//SetMarginsNonClientRegionAPI.MARGINSmargins=newNonClientRegionAPI.MARGINS();//Ext

7、endglassframeintoclientarea//NotethatthedefaultdesktopDpiis96dpi.Themarginsare//adjustedforthesystemDpi.margins.cxLeftWidth=Convert.ToInt32(5*(DesktopDpiX/96));margins.cxRightWidth=Convert.ToInt32(5*(DesktopDpiX/96));margins.cyTopHeight=Convert.ToInt32

8、(((int)topBar.ActualHeight+5)*(DesktopDpiX/96));margins.cyBottomHeight=Convert.ToInt32(5*(DesktopDpiX/96));inthr=NonClientRegionAPI.DwmExtendFrameIntoClientArea(mainWindowSrc.Handle,refmargins);//if(hr<0){//DwmExtendFrameIntoClientAreaF

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。