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);
        }
Beispiel #5
0
        public static void EnableBlur(Window window, AccentFlags accentFlags)
        {
            var accentPolicy = new AccentPolicy
            {
                AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND,
                AccentFlags = accentFlags,
            };

            SetAccentPolicy(window, accentPolicy);
        }
Beispiel #6
0
        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);
        }