Frage

Ich arbeite mit einer Win32-Anwendung, die eine Vielzahl von benutzerdefinierten Fenstertypen erstellen muss. Insbesondere sind diese Fenster oft nicht-Rechteck, haben Schatten oder sind meist transparent.

Ich bin derzeit WS_EX_LAYERED mit UpdateLayeredWindow transparenten Fenster zu schaffen, dann kann ich auf meine beliebigen Grafiken zeichnen. Allerdings finde ich, Ebenen-Fenster Begrenzung in sein, dass Sie nicht geschichtetes Kind Fenster haben können, noch kann ein geschichtetes Fenster richtig ‚normales‘ Win32-Steuerelemente ausgeführt.

Unsere Code-Basis ist mehrere Jahre alt, mit meist Win32 und GDI, aber wir sind in dem Prozess der Modernisierung Dinge und es ist Zeit zu neueren Technologien suchen.

Ich habe als in WPF meiner Gewohnheit Windowing tun, aber ich bin besorgt über das, was ich über ‚Luftraum‘ Themen gelesen habe. Es scheint, dass WPF Ebenen-Fenster verwendet, um seine pro-Pixel-Alpha-Blending zu erreichen und so scheint, wie es auch von den Beschränkungen leiden würde ich zuvor erlebt habe.

Ich weiß nicht viel (alles, wirklich) über Direct2D, aber das Technologie klingt wie es interessant sein könnte. Obwohl, ich kann keine Referenzen finden, um es Overlay-Fenster tun zu können.

Also, alles dies bringt mich zu meinem Problem: Was ist die beste Technologie-Overlay-Fenster unter Windows zu tun? (Vista und Win7 auf einem Minimum, würde XP schön zu haben)

Bin ich zu vernachlässigen einige besonders gute Technik? Alle Vorschläge würden geschätzt.

War es hilfreich?

Lösung

Ich empfehle Direct2D und Directwrite, wie Sie hochwertiges bekommen Rendering-das ist auch lächerlich schnell im Vergleich zu entweder GDI oder irgendetwas in dem .Net Raum getan. Das einzige Problem ist, dass Sie Vista oder höher OS, es zu benutzen.

Andere Tipps

kann WPF tun, was Sie für sehr leicht suchen, aber, diese besondere Eigenschaft von WPF (Windows mit pro-Pixel-Transparenz) dazu neigt, aufgrund Grafiktreiber Bugs sehr problematisch zu sein (scheinbar Grafik-Hardware-Hersteller nicht testen geschichteten Direct3D Fenster mit je alpha-Wert-Pixel sehr gut).

WPF Nutzt Ebenen-Fenster für Transparenz, aber es funktioniert nicht „normal“ win32-Steuerelemente verwenden, alle WPF-Steuerelemente in einem Fenster, um sie selbst machen nur ein win32 Fenster verwenden, sie alle unterstützen Transparenz.

Das „Luftraum“ Problem tritt nur auf, wenn Sie ein WinForms-Steuerelement in einem WPF-Fenstern Host.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top