Entwickler-Ecke

WinForms - Teilweise durchsichtige Form (nicht Rahmen oder Elemente)


DiaryOfDreams - Mi 07.04.10 15:11
Titel: Teilweise durchsichtige Form (nicht Rahmen oder Elemente)
Hallo.

Ich möchte eine Form haben deren Hintergrund zu einer bestimmten Prozentzahl durchsichtig ist.
Ich habe bereits herausgefunden das man eine Farbe definieren kann welche dann durchsichtig ist - aber ich will ja nur eine Durchsichtigkeit von x Prozent (x != 100).
Außerdem kann man mit Opacity auch die komplette Form prozentuell durchsichtig machen - ich will aber das der Rahmen und auf der Form befindliche Elemente NICHT durchsichtig werden.

Hat da jemand 'ne Idee zu?
Ich denke fast das es nur gehen wird indem ich 'ne eigene Form erbe und erstelle oder?


Christoph1972 - Mi 07.04.10 18:23

Tach :D

Hier [http://www.vbarchiv.net/tipps/tipp_1572-formular-mit-guckloch-vbnet.html] eine Anregung. Elipse muss gegen Rectangle getauscht werden, hier und da noch was anpassen, dann sollte das realisierbar sein.


DiaryOfDreams - Do 08.04.10 12:24

Hi.
Erstmal Danke für den Tip, aber irgendwie klappt der bei mir nicht.
Ich habe meiner Form einen blauen Hintergrund zugewiesen. Der TransparencyKey steht auf "Silver". Also zeichne ich nun einen Kreis mit "new SolidBrush(Color.Silver)", aber ich sehe anschließend diesen silbernen Kreis - nicht jedoch den Bildschirm dahinter.

EDIT: Habe "new SolidBrush(Color.Silver)" jetzt durch "new SolidBrush(this.TransparencyKey)" ersetzt, was aber auch keine Änderung bringt.


Christoph1972 - Do 08.04.10 18:20

Hi, ich kann dir nicht sagen warum es nicht geht. Ich habe es vor ewigkeiten mal gemacht und es hat funktioniert. Du hast sicher einen Fehler bei der Übersetzung gemacht.


DiaryOfDreams - Fr 09.04.10 08:30

Naja, viel kann man da ja nicht falsch übersetzen. ;-)
Aber da der Tip ja letzten Endes auch nur eine komplette Durchsichtigkeit ermöglicht habe ich das ganze jetzt anders herum gemacht. Also die Hintergrundfarbe auf Transparent und alles was nicht transparent sein soll per paint-Methode nachgezeichnet. Damit habe ich jetzt auch keine Teiltransparenz, aber sowas scheint wohl auch nicht möglich zu sein.


Kha - Fr 09.04.10 13:17

user profile iconDiaryOfDreams hat folgendes geschrieben Zum zitierten Posting springen:
Damit habe ich jetzt auch keine Teiltransparenz, aber sowas scheint wohl auch nicht möglich zu sein.
Möglich schon, nur sind dann alle Form-Controls weg ;) : http://blogs.msdn.com/mswanson/archive/2005/07/07/436618.aspx


norman2306 - Fr 09.04.10 13:25

Du könntest auch einfach zwei Formen übereinanderklatschen. Deine erste Form gestalltest du ohne Controls. Deine zweite Form machst du als ränderlose Form mit Transparency-Key. Dann setzt du beide auf die gleiche Größe. Mit dem WinAPI-Befehl SetParent kannst du die zweite Form dann in die Erste einbetten.