WPF技巧大全:[2]Aero Glass 效果

 时间:2024-10-13 16:54:37

1、打开VS,新建“WPF应用程序”项目,V幞洼踉残B.NET/C#均可,VS12起C++也可以。(本例用的是VB.NET,马上就会更新C#版)

WPF技巧大全:[2]Aero Glass 效果

2、创建一个类AeroGlassHelper,用于协助将Aero Glass扩展到窗口中。

3、添加以下API声明,其中Margins是一个辅助结构,待会会定义。

WPF技巧大全:[2]Aero Glass 效果

4、创建扩展Aero Glass的函数

WPF技巧大全:[2]Aero Glass 效果

5、创建辅助结构,至此用来扩展的对象已经写完。

WPF技巧大全:[2]Aero Glass 效果

6、下面创建一个继承自Win蟠校盯昂dow的类ExtendAeroGlassWindow,分别写初始化过程、创建Win霸烹钟爷Proc消息处理函数(WPF没有该函数)以及获取或设置窗口各边要扩展Aero Glass的宽度的属性。Public Class ExtendAeroGlassWindow Inherits System.Windows.Window Private Const WM_DWMCOMPOSITIONCHANGED As Integer = &H31E Protected Overrides Sub OnSourceInitialized(e As EventArgs) MyBase.OnSourceInitialized(e) Try AeroGlassHelper.ExtendGlassFrame(Me, ExtendGlassFrameWidth) Dim h As New WindowInteropHelper(Me) Dim hwnd = h.Handle HwndSource.FromHwnd(hwnd).AddHook(New HwndSourceHook(AddressOf WndProc)) Catch ex As Exception End Try End Sub Private Function WndProc(hwnd As IntPtr, msg As Integer, wParam As IntPtr, lParam As IntPtr, ByRef handled As Boolean) As IntPtr If msg = WM_DWMCOMPOSITIONCHANGED Then Try AeroGlassHelper.ExtendGlassFrame(Me, ExtendGlassFrameWidth) handled = True Catch ex As Exception End Try End If Return IntPtr.Zero End Function Protected Friend _ExtendGlassFrameWidth As Thickness = New Thickness(-1) ''' <summary> ''' 获取或设置窗口各边要扩展Aero Glass的宽度。 ''' </summary> ''' <value></value> ''' <returns> ''' 一个Thickness对象,描述窗体周围框架的粗细。 ''' </returns> ''' <remarks></remarks> Public Property ExtendGlassFrameWidth() As Thickness Get Return _ExtendGlassFrameWidth End Get Set(value As Thickness) Try AeroGlassHelper.ExtendGlassFrame(Me, value) Catch ex As Exception Exit Property End Try _ExtendGlassFrameWidth = value End Set End Property End Class

7、大功告成!以后XAML定义的窗体就从ExtendAeroGlassWindow而不是Window创建。

  • 怎样使win7桌面有aero效果
  • Aero效果/特效是什么以及如何开启Aero
  • win7美化2关闭aero
  • aero glass怎样去水印
  • 热门搜索
    老年斑是怎么形成的 佐卡伊钻戒怎么样 吕雉怎么死的 怎么复制粘贴 衬衫怎么叠 狗狗拉稀怎么办 家庭成员情况怎么写 小孩口腔溃疡怎么办 天生黑怎么全身美白 饥荒怎么建房子