Windows::Form::Forms im Vista Style (mit PNG)



  • Hallo,

    ich möchte dieses Thema nochmals aufgreifen, da ich bei den bisher gefundenen Beiträgen keine funktionierende Lösung gefunden habe.

    Ich habe in der Vergangenheit immer C++ mit MFC programmiert und dabei nach dem Beispiel von CodeProjekt.com einen halb-transparenten Dialog incl. Schatten-Effekt erstellt
    (siehe http://www.codeproject.com/KB/dialog...ingDialog.aspx)

    Könnt Ihr mir helfen, und ein paar Tipps geben, wie man das bei einem .NET-Projekt (also System::Windows::Forms::Form statt CDialog) macht.

    Bisher habe ich versucht die PNG-Grafik direkt als Hintergrund auf die Form zu legen, das Problem ist jedoch, dass man die BackColor einer Form nicht auf "Transparent" setzten kann. Wenn möglich ohne MFC und GDI+.

    Geht das überhaut?



  • Der Link funktioniert leider nicht.

    Es gibt die Eigenschaft Opacity und TransparencyKey . Eventuell hilft Dir das weiter.



  • schön währs... leider nicht.

    Mit der Kombination aus diesen beiden Eigenschaften kann man eine einzige bestimmte Farbe transparent machen, aber keine Schatteneffekte (mit den alpha-Werten aus den PNG's) realisieren.

    sorry, nochmal der link: http://www.codeproject.com/KB/dialog/VisitaLookingDialog.aspx

    So sollte es aussehen.



  • Ich fürchte da wirst Du auf WPF zurückgreifen müssen. (Bevor Du Dich reinstürzt: Warte mal eine zweite Meinung ab 🤡



  • Abent/Morgen/Whateva 😃

    Ganz abgsehen davon, dass es vermutlich sowieso extrem langsam wäre (weshalb auch ich zu WPF raten würde...), glaube ich nicht, dass Windows Forms für sowas eigene Funktionen bereitstellen. Wie Knuddlbaer schon gesagt hat gibts diese beiden Eigenschaften, aber sie reichen bei weitem nicht aus für deine Zwecke. Es hindert dich jedoch niemand daran, bei Windows Forms dieselben Funktionen der WinAPI aufzurufen, wie du es schon bei der MFC (evtl. gekapselt) gemacht hast. Einfach immer schön für die HWND s die Eigenschaft Handle übergeben und es sollte funktionieren wie gewohnt^^

    MfG



  • Danke für den Tipp.

    Ich fürchte, das klingt einfacher als es ist. Hab bereits in diese Richtung gedacht und schon mal ein wenig rum gebastelt bis ich irgendwann von einer Lawine Fehlermeldungen überrollt wurde.

    ...aber ich werde mir das nochmal in aller Ruhe anschauen und einen 2. Versuch wagen.


Anmelden zum Antworten