3 Stimmen

.net - Glaseffekt in C# 2.0-Anwendungen

Wie kann ich einen Vista- oder Mac OS X-Stil Glaseffekte auf Windows-Forms-Anwendungen in .net 2.0 geben?

4voto

Factor Mystic Punkte 25189

Dies geschieht durch Interop mit der Vista DWM (Desktop Window Manager) API.

Importieren Sie zum Beispiel diese Funktionen:

[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;
}

Damit können Sie das Glas vom oberen Rand des Fensters nach unten in den Kundenbereich "ziehen":

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

DwmExtendFrameIntoClientArea(this.Handle, ref GlassMargins);

Von hier aus können Sie weitere Dinge tun, z. B. Text oder Bilder auf das Glas zeichnen oder Steuerelemente darauf anbringen, z. B. eine Anwendungsschaltfläche im Stil von Office 2007.

2voto

i_am_jorf Punkte 52346

Die Glasfensterränder in Vista Aero werden mit der DWM zusammengesetzt. Dies ist eine Funktion auf Betriebssystemebene. Wenn Sie Ihre Anwendung unter Vista ausführen, sollten Sie den Glasrand kostenlos erhalten.

Wenn Sie den Glaseffekt auf den Kundenbereich ausdehnen möchten, verwenden Sie DwmExtendFrameIntoClientArea so wie es auch der Internet Explorer in seiner Symbolleiste macht. Ich vermute, dass Sie die Interop schreiben müssen, um diese native Funktion selbst aufzurufen (oder überprüfen Sie http://pinvoke.net ).

1voto

MicTech Punkte 38437

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X