level 9
这个我熟:
Public Class WindowsBlurEffect
Public Sub EnableBlur(targetWindow As Window)
Dim windowHelper = New System.Windows.Interop.WindowInteropHelper(targetWindow)
Dim accent As New AccentPolicy With {.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND}
Dim accentStructSize As Integer = Runtime.InteropServices.Marshal.SizeOf(accent)
Dim accentPtr As IntPtr = Runtime.InteropServices.Marshal.AllocHGlobal(accentStructSize)
Try
Runtime.InteropServices.Marshal.StructureToPtr(accent, accentPtr, False)
Dim data As New WindowCompositionAttributeData With {.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY,.SizeOfData = accentStructSize,.Data = accentPtr}
SetWindowCompositionAttribute(windowHelper.Handle, data)
Finally
Runtime.InteropServices.Marshal.FreeHGlobal(accentPtr)
End Try
End Sub
<Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Sequential)>
Private Structure AccentPolicy
Public AccentState As AccentState
Public AccentFlags As Integer
Public GradientColor As Integer
Public AnimationId As Integer
End Structure
Private Enum AccentState
ACCENT_DISABLED = 0
ACCENT_ENABLE_GRADIENT = 1
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2
ACCENT_ENABLE_BLURBEHIND = 3
ACCENT_ENABLE_ACRYLICBLURBEHIND = 4
ACCENT_ENABLE_HOSTBACKDROP = 5
End Enum
<Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Sequential)>
Private Structure WindowCompositionAttributeData
Public Attribute As WindowCompositionAttribute
Public Data As IntPtr
Public SizeOfData As Integer
End Structure
Private Enum WindowCompositionAttribute
WCA_ACCENT_POLICY = 19
End Enum
<Runtime.InteropServices.DllImport("user32.dll")>
Private Shared Function SetWindowCompositionAttribute(hWnd As IntPtr, ByRef data As WindowCompositionAttributeData) As Integer
End Function
End Class
2026年05月18日 17点05分
7