Esempio n. 1
0
        private void EnableBlur()
        {
            var windowHelper = new WindowInteropHelper(this);

            var accent = new User32.AccentPolicy
            {
                AccentState = User32.AccentState.ACCENT_ENABLE_BLURBEHIND
            };

            var accentStructSize = Marshal.SizeOf(accent);

            var accentPtr = Marshal.AllocHGlobal(accentStructSize);

            Marshal.StructureToPtr(accent, accentPtr, false);

            var data = new User32.WindowCompositionAttributeData
            {
                Attribute  = User32.WindowCompositionAttribute.WCA_ACCENT_POLICY,
                SizeOfData = accentStructSize,
                Data       = accentPtr
            };

            User32.SetWindowCompositionAttribute(windowHelper.Handle, ref data);

            Marshal.FreeHGlobal(accentPtr);
        }
Esempio n. 2
0
        public static void ApplyBlur(Window window)
        {
            var accent = new User32.AccentPolicy {
                AccentState = User32.AccentState.EnableBlurBehind,
                AccentFlags = 2
            };

            var accentPtr  = IntPtr.Zero;
            var accentSize = Marshal.SizeOf(accent);

            try {
                accentPtr = Marshal.AllocHGlobal(accentSize);

                Marshal.StructureToPtr(accent, accentPtr, false);

                var wcaData = new User32.WindowCompositionAttributeData {
                    Attribute  = User32.WindowCompositionAttribute.AccentPolicy,
                    SizeOfData = accentSize,
                    Data       = accentPtr,
                };

                User32.SetWindowCompositionAttribute(new WindowInteropHelper(window).Handle, ref wcaData);
            }
            finally {
                if (accentPtr != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(accentPtr);
                }
            }
        }