コード例 #1
0
        internal void EnableBlur(IntPtr handle)
        {
            var accent           = new AccentPolicy();
            var accentStructSize = Marshal.SizeOf(accent);

            accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND;
            accent.AccentFlags = 2;
            var opacity = (byte)(this.sldOpacity.Value * 255);
            var col     = HSVColor.FromHSV((float)this.hsvSelector.Hue, 1, 1).ToRGB();
            var color   = (opacity << 24) + (col.B << 16) + (col.G << 8) + col.R;

            accent.GradientColor = (uint)color;

            var accentPtr = Marshal.AllocHGlobal(accentStructSize);

            Marshal.StructureToPtr(accent, accentPtr, false);

            var data = new WindowCompositionAttributeData();

            data.Attribute  = WindowCompositionAttribute.WCA_ACCENT_POLICY;
            data.SizeOfData = accentStructSize;
            data.Data       = accentPtr;

            SetWindowCompositionAttribute(handle, ref data);

            Marshal.FreeHGlobal(accentPtr);
        }