Создание полупрозрачного размытого фона WPF - PullRequest
4 голосов
/ 07 мая 2010

У меня есть граница, я хочу, чтобы фон этой границы был частично прозрачным (непрозрачность 0,8), но я не хочу, чтобы изображение позади него было четко определено. Эффект, который мне нужен, похож на эффект границы окна Windows Vista, где вы можете видеть, что что-то стоит за этим, но вы не можете сказать, что это такое.

Несколько уточнений:
Я работаю на Windows XP, поэтому я не могу использовать Vista Glass
Мне нужно, чтобы это решение было переносимым на любую платформу Windows

Любая помощь будет оценена :) 1007 *

Ответы [ 3 ]

2 голосов
/ 25 июня 2011

Расширение стеклянной рамки в приложение WPF

Окно WPF с фоном из стекла. (C # .NET)

Размытие DWM за обзором

Надеюсь, одна из этих ссылок поможет. Я использовал первую ссылку, которую мне пришлось добавить, чтобы этот класс работал:

#region WINAPI Crap, none should handle this in 21st century
    private class NonClientRegionAPI
    {
        [StructLayout(LayoutKind.Sequential)]
        public struct MARGINS
        {
            public int cxLeftWidth;      // width of left border that retains its size
            public int cxRightWidth;     // width of right border that retains its size
            public int cyTopHeight;      // height of top border that retains its size
            public int cyBottomHeight;   // height of bottom border that retains its size
        };


        [DllImport("DwmApi.dll")]
        public static extern int DwmExtendFrameIntoClientArea(
            IntPtr hwnd,
            ref MARGINS pMarInset);

    }
    #endregion
1 голос
/ 07 мая 2010

Это лучшее, что я мог найти в сети:

http://blogs.msdn.com/unnir/archive/2006/03/01/541154.aspx

Учитывая вышесказанное от парня из Microsoft, вам будет сложно найти лучший способсделать это.

Это делает простую прозрачность на окне, поэтому не совсем как стекло Aero.Aero-эффект аппаратно ускорен и наверняка использует Direct3D в некотором роде.

Этот SO-ответ говорит об этом более детально:

Можно ли добиться эффекта "Aero Glass" на XP?

0 голосов
/ 07 мая 2010

В Silverlight есть эффект размытия (http://www.silverlightshow.net/tips/Using-Blur-and-DropShadow-effects-in-Silverlight-3.aspx) также должен быть доступен для WPF (http://searchwindevelopment.techtarget.com/tip/0,289483,sid8_gci1377157,00.html), который вы можете применить к элементам управления. Может быть, сочетание этого с непрозрачностью поможет вам достичь желаемой цели?

...