diff --git a/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs b/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs index b68db22e..7afe5ab3 100644 --- a/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs +++ b/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs @@ -1,5 +1,4 @@ -using System.Runtime.InteropServices; -using System.Windows.Media; +using System.Runtime.InteropServices; using HandyControl.Data; using HandyControl.Tools; using HandyControl.Tools.Helper; @@ -19,25 +18,29 @@ namespace HandyControl.Controls { var versionInfo = SystemHelper.GetSystemVersionInfo(); - if (versionInfo < SystemVersionInfo.Windows10 || - versionInfo >= SystemVersionInfo.Windows10_1903) - { - var colorValue = ResourceHelper.GetResourceInternal(ResourceToken.BlurGradientValue); - var color = ColorHelper.ToColor(colorValue); - color = Color.FromRgb(color.R, color.G, color.B); - window.Background = new SolidColorBrush(color); - return; - } - var accentPolicy = new InteropValues.ACCENTPOLICY(); var accentPolicySize = Marshal.SizeOf(accentPolicy); - accentPolicy.AccentState = versionInfo < SystemVersionInfo.Windows10_1809 - ? InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND - : InteropValues.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND; - accentPolicy.AccentFlags = 2; - accentPolicy.GradientColor = ResourceHelper.GetResourceInternal(ResourceToken.BlurGradientValue); + + if (versionInfo >= SystemVersionInfo.Windows10_1903) + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND; + } + else if (versionInfo >= SystemVersionInfo.Windows10_1809) + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND; + } + else if (versionInfo >= SystemVersionInfo.Windows10) + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND; + } + else + { + accentPolicy.AccentState = InteropValues.ACCENTSTATE.ACCENT_ENABLE_TRANSPARENTGRADIENT; + } + + accentPolicy.GradientColor = ResourceHelper.GetResource(ResourceToken.BlurGradientValue); var accentPtr = Marshal.AllocHGlobal(accentPolicySize); Marshal.StructureToPtr(accentPolicy, accentPtr, false);