Wie kann ich einen Vista- oder Mac OS X-Stil Glaseffekte auf Windows-Forms-Anwendungen in .net 2.0 geben?
Antworten
Zu viele Anzeigen?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.
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 ).
DevExpress-Komponenten
- für .NET 2.0
http://devexpress.com/Products/NET/DXperience/editionWinForms.xml
Erstellen einer Glastaste mit GDI+