Example #1
0
        internal static void SetBlur(Window win, AcrylicAccentState state, AccentFlagsType style = AccentFlagsType.Window)
        {
            var windowHelper = new WindowInteropHelper(win);

            var value = AcrylicHelper.SelectAccentState(state);

            AcrylicHelper.SetBlur(windowHelper.Handle, style, value);
        }
Example #2
0
 internal static AccentState SelectAccentState(AcrylicAccentState state = AcrylicAccentState.Default)
 {
     // ウィンドウのアクリル効果を設定する
     AccentState value = state switch
     {
         // ウィンドウ背景のぼかしを行うのはWindows10の場合のみ
         // OSのバージョンに従い、AccentStateを切り替える
         AcrylicAccentState.Default => SystemInfo.Version.Value switch
         {
             // Windows11環境ではアクリル効果を無効にする
             var version when version >= VersionInfos.Windows11_Preview => AccentState.ACCENT_ENABLE_GRADIENT,
             // Windows10 1903以降では、ACCENT_ENABLE_ACRYLICBLURBEHINDを用いると、ウィンドウのドラッグ移動などでマウス操作に追従しなくなる。
             // ウィンドウの移動/リサイズ中だけ、ACCENT_ENABLE_ACRYLICBLURBEHINDを無効にして、この問題を回避する
             //var version when version >= VersionInfos.Windows10_1903 => AccentState.ACCENT_ENABLE_BLURBEHIND,
             var version when version >= VersionInfos.Windows10_1809 => AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND,
             var version when version >= VersionInfos.Windows10 => AccentState.ACCENT_ENABLE_BLURBEHIND,
                 _ => AccentState.ACCENT_ENABLE_TRANSPARENTGRADIENT,
         },
Example #3
0
 public static void SetAcrylicAccentState(DependencyObject obj, AcrylicAccentState value)
 {
     obj.SetValue(AcrylicAccentStateProperty, value);
 }