public static void Set(Window window, AccentState accentState, AccentFlags accentFlags) { var hwndSource = PresentationSource.FromVisual(window) as HwndSource; if (hwndSource == null) { return; } var accent = new AccentPolicy { AccentState = accentState, AccentFlags = accentFlags, }; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData { Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY, SizeOfData = accentStructSize, Data = accentPtr, }; User32.SetWindowCompositionAttribute(hwndSource.Handle, ref data); Marshal.FreeHGlobal(accentPtr); }
internal static void SetAccentPolicy(IntPtr hWnd, AccentState accentState, AccentFlags accentFlags, uint gradientColor) { var accent = new AccentPolicy { AccentState = accentState, AccentFlags = accentFlags, AnimationId = 0, GradientColor = gradientColor }; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData { Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY, SizeOfData = accentStructSize, Data = accentPtr }; _SetWindowCompositionAttribute(hWnd, ref data); Marshal.FreeHGlobal(accentPtr); }
public static void DisableBlur(IntPtr hWnd, AccentState accentState, AccentFlags flags, UsingColors gradientColor) { var hex = (uint)gradientColor; NativeMethods.SetAccentPolicy(hWnd, accentState, flags, hex); }
public static void EnableBlur(IntPtr hWnd, AccentFlags accentFlags, uint hex) { if (SystemParameters.HighContrast) { return; // Blur is not useful in high contrast mode } NativeMethods.SetAccentPolicy(hWnd, AccentState.ACCENT_ENABLE_BLURBEHIND, accentFlags, hex); }
public static void EnableBlur(Window window, AccentFlags accentFlags) { var accentPolicy = new AccentPolicy { AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND, AccentFlags = accentFlags, }; SetAccentPolicy(window, accentPolicy); }
public static void EnableAcrylicBlur(Window window, Color backgroundColor, AccentFlags accentFlags) { var accentPolicy = new AccentPolicy { AccentState = AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND, AccentFlags = accentFlags, GradientColor = ColorHelper.GetColorAsUInt32(backgroundColor), }; SetAccentPolicy(window, accentPolicy); }