Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Runtime.InteropServices;
- using System.Windows;
- using System.Windows.Interop;
- namespace MakeWindowBlur
- {
- internal enum AccentState
- {
- ACCENT_DISABLED = 1,
- ACCENT_ENABLE_GRADIENT = 0,
- ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
- ACCENT_ENABLE_BLURBEHIND = 3,
- ACCENT_INVALID_STATE = 4
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct AccentPolicy
- {
- public AccentState AccentState;
- public int AccentFlags;
- public int GradientColor;
- public int AnimationId;
- }
- [StructLayout(LayoutKind.Sequential)]
- internal struct WindowCompositionAttributeData
- {
- public WindowCompositionAttribute Attribute;
- public IntPtr Data;
- public int SizeOfData;
- }
- internal enum WindowCompositionAttribute
- {
- // ...
- WCA_ACCENT_POLICY = 19
- // ...
- }
- internal class WindowBlur
- {
- [DllImport("user32.dll")]
- internal static extern int SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data);
- internal void EnableBlur(Window window)
- {
- var windowHelper = new WindowInteropHelper(window);
- var accent = new AccentPolicy
- {
- AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND
- };
- 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(windowHelper.Handle, ref data);
- Marshal.FreeHGlobal(accentPtr);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement