Transparenter Form-Hintergrund, mit GDI zeichnen

  • C#
  • .NET (FX) 1.0–2.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Gonger96.

    Transparenter Form-Hintergrund, mit GDI zeichnen

    Moin!

    Wollte euch fragen, ob ihr ne Idee habt, wie man eine Form transparent wird, aber mit GDI darauf gezeichnet werden kann.

    Anwendung:
    Eine transparente Form, maximiert und TopMost=True, um auf dem Bildschirm verschiedene Infos anzuzeigen. Oder zum Beispiel ein Bild, das dem Cursor folgt.

    Habe ausprobiert:
    - CreateParams / SetWindowLong & GetWIndowLong (cp.ExStyle |= 0x80000 | 0x20| 0x80)
    Problem: Das Fenster wird gar nicht mehr dargestellt!

    - TransparencyKey
    Problem: Transparente Bilder (aweebitirish.com/wp-content/uploads/2014/04/mario-8-bit.png) werden nicht korrekt dargestellt!

    Wie also kann man das lösen?
    Wie Bilder mit Transparenz auf transparenter Form darstellen...?

    Und ja, ich habe bereits das VBP, StackOverflow und damit auch Google durchsucht. Es wird nur immer wieder auf TransparencyKey und CreateParams bzw. SetWindowLong und GetWindowLong verwiesen.

    Ich benutze Windows 8, wenn das irgendwie Einfluss haben könnte.

    MfG,
    X-Zat / Mo

    X-Zat schrieb:

    Eine transparente Form, maximiert und TopMost=True, um auf dem Bildschirm verschiedene Infos anzuzeigen

    Willst du für irgendein Programm ein Overlay machen ? Dann geht das einfacher, undzwar holst du dir den Prozess, davon das Handle und zeichnest da mit GDi drauf (Graphics.FromHwnd).
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Das ist mir ausversehen mal in einem Win32 Projekt passiert. Das Fenster war transparent und etwas mit GDI/DX drauf gemalt. Allerdings sieht man dann noch diese leichten Aeroschatten. Am einfachsten setzt du n Hook auf die WndProc des Fensters und renderst dort mit GDI+ und dem entsprechendem DC.
    Moin!

    Nein, nicht für irgendein Programm, sondern für den gesamten Desktop. Zum Beispiel einfach ein Ball, der über den Screen rollt - Immer TopMost und natürlich rund (also mit transparenten "Ecken").
    Beim Einsatz von CreateParams wurde die gesamte Form transparent - Inklusive Controls. Da bringt's mir auch nichts, da mit GDI zu rendern, wenn schlichtweg nichts angezeigt wird... Gibt's denn keinen Weg, transparente Forms zu erstellen? Ohne Quatsch wie Opacity oder TransparencyKey?