.net - Эффект стекла в приложениях C # 2.0 - PullRequest
3 голосов
/ 14 июня 2009

Как добавить эффекты стекла в стиле Vista или Mac OS X для приложений форм Windows в .net 2.0?

Ответы [ 3 ]

4 голосов
/ 14 июня 2009

Это делается с помощью взаимодействия с API-интерфейсом Vista DWM (Desktop Window Manager).

Например, импортируйте эти функции:

[DllImport("dwmapi.dll")]
static extern void DwmExtendFrameIntoClientArea(IntPtr hWnd, ref Margins pMargins);


[StructLayout(LayoutKind.Sequential)]
struct Margins
{
    public int cxLeftWidth;
    public int cxRightWidth;
    public int cyTopHeight;
    public int cyBottomHeight;
}

Затем вы можете использовать это, чтобы «опустить» стекло из верхней части окна вниз в клиентскую область:

GlassMargins.Top = 40;
GlassMargins.Left = 0;
GlassMargins.Right = 0;
GlassMargins.Bottom = 0;

DwmExtendFrameIntoClientArea(this.Handle, ref GlassMargins);

Отсюда вы можете продолжать и делать другие вещи, например рисовать текст или изображения на стекле или помещать на него элементы управления, например кнопку приложения в стиле Office 2007.

2 голосов
/ 14 июня 2009

Границы стеклянного окна в Vista Aero составляются с использованием DWM. Это функция уровня ОС. Если вы запускаете свое приложение в Vista, вы должны получить стеклянную рамку бесплатно.

Если вы хотите расширить эффект стекла на клиентскую область, используйте DwmExtendFrameIntoClientArea , как это делает Internet Explorer на панели инструментов. Я подозреваю, что вам придется написать взаимодействие, чтобы вызвать эту нативную функцию самостоятельно (или проверьте http://pinvoke.net).

1 голос
/ 14 июня 2009

компоненты DevExpress

  • для .NET 2.0

http://devexpress.com/Products/NET/DXperience/editionWinForms.xml


Создание стеклянной кнопки с использованием GDI +

http://www.codeproject.com/KB/buttons/glassbutton.aspx

...