Как сделать форму с эффектом размытия в windows 10
Этот код получен из Добавление размытия "Aero Glass" в ваши приложения Windows 10.
Я преобразовал этот код в vb.net но не работает на меня. Это полный код
Imports System.Runtime.InteropServices Imports System.Windows.Interop Friend Enum AccentState ACCENT_DISABLED = 0 ACCENT_ENABLE_GRADIENT = 1 ACCENT_ENABLE_TRANSPARENTGRADIENT = 2 ACCENT_ENABLE_BLURBEHIND = 3 ACCENT_INVALID_STATE = 4 End Enum <StructLayout(LayoutKind.Sequential)> Friend Structure AccentPolicy Public AccentState As AccentState Public AccentFlags As Integer Public GradientColor As Integer Public AnimationId As Integer End Structure <StructLayout(LayoutKind.Sequential)> Friend Structure WindowCompositionAttributeData Public Attribute As WindowCompositionAttribute Public Data As IntPtr Public SizeOfData As Integer End Structure Friend Enum WindowCompositionAttribute ' ... WCA_ACCENT_POLICY = 19 ' ... End Enum Public Class BlurBehindTest <DllImport("user32.dll")> Friend Shared Function SetWindowCompositionAttribute(ByVal hwnd As IntPtr, ByRef data As WindowCompositionAttributeData) As Integer End Function Friend Sub EnableBlur() Dim windowHelper = New Form 'WindowInteropHelper(Me) < This code only working on WPF app, so i've changed to Form Dim accent = New AccentPolicy() accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND Dim accentStructSize = Marshal.SizeOf(accent) Dim accentPtr = Marshal.AllocHGlobal(accentStructSize) Marshal.StructureToPtr(accent, accentPtr, False) Dim data = New WindowCompositionAttributeData() data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY data.SizeOfData = accentStructSize data.Data = accentPtr SetWindowCompositionAttribute(windowHelper.Handle, data) Marshal.FreeHGlobal(accentPtr) End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load EnableBlur() End Sub End Class
Что я уже пробовал:
Можно ли объединить форму WPF с формой Windows?
Если вы не можете, пожалуйста, поделитесь своими знаниями о WindowCompositionAttribute
Спасибо за аванс, Сэмми