Frage

Ich bin über meine Gedanken hier zu verlieren.
Warum wird nicht das Kontrollkästchen Kontrollmischung mit dem, was steckt dahinter?
Die Frage gilt für alle WinForms Kontrollen, aber ich verwende dies als Beispiel.

Ein Bild sagt mehr als tausend Worte:

alt text

Und noch ein paar Worte:
Was steckt hinter der CheckBox sind farbige PictureBoxes und Button.
Die CheckBox des BackColor auf Transparent gesetzt. Aber irgendwie entscheidet es, dass das Mittel sollte es die BackColor des enthaltenden Form teilen (ist, dass seine Vorstellung von der Illusion der Transparenz?).

Ist dies nicht möglich, in WinForms? Ich könnte schwören, ich habe dies vor.

UPDATE:
Ich habe gerade versucht dies:
Bei dieser Form stellen die CheckBox des BackColor zu Transparent, dann die BackColor des enthaltenden Form auf eine andere Farbe ändern, und die CheckBox wird diese BackColor entsprechen. Was die .......?

War es hilfreich?

Lösung

Bob Powell eine ausgezeichnet Artikel über transparente Kontrollen geschrieben hat. Check it out:

http://www.bobpowell.net/transcontrols.htm

Andere Tipps

Dies ist ein Nebeneffekt der Kontrollen Windows-Fenster zu sein. Ein Fenster verantwortlich ist selbst für die Erstellung, die OnPaintBackground und OnPaint Methoden sorgen dafür.

Dieses Rendering-Modell Transparenz nicht gut unterstützt. Es gibt Unterstützung für echte Transparenz durch überlappenden Fenstern verwendet wird. Die vom Videoadapter implementiert ist, verwendet Windows die Hardware-Overlay-Funktion. Aber das funktioniert nur für Top-Level-Fenster, nicht Kind Fenster. Beachten Sie die Form.Opacity und Form.TransparencyKey Eigenschaften.

Es gibt teilweise Unterstützung für Transparenz durch einen Trick. Eine Steuerung kann fälschen, indem die übergeordnete Fenster fragt sich innerhalb der Steuerfenster zuerst zu zeichnen. Das erzeugt die Hintergrundpixel, kann es dann oben darauf ziehen. Festlegen der Backcolor-Eigenschaft auf Color.Transparent ermöglicht diesen Trick für Steuerelemente, die dies unterstützen. Alle von der Button abgeleiteten Klassen zu tun. Aber nicht Steuerelemente, sind Wrapper für native Windows-Steuerelemente.

„Asking das übergeordnete Fenster“ ist, wo der Fehler in diesem Trick in Ihrem Screenshot sichtbar wird. Sie sehen die Form Pixel. Stapelungseffekte nicht funktionieren, es hält nie Vermittler Fenster in der Z-Ordnung, nur die Eltern. Dies ist fixierbar, aber sehr hässlich, gibt es einen KB-Artikel, der den Code zeigen.

Ebenfalls bemerkenswert ist, dass WPF diese Einschränkung nicht hat. Die Kontrollen sind keine Fenster, sie machen sich allein auf der Oberseite der Mutter Malerei. Schichten von Farbe. Transparenz ist jetzt trivial, einfach nicht malen.

Kann stellen Sie die Hintergrundfarbe der Checkbox manuell auf die Farbe, die Sie wollen? (Der Wert in der picturebox dahinter)

'Transparent' kann von etwas anderes bedeuten, was Sie MS wollen.

Versuchen Sie auch, die ZOrder der Picture Wechsel (nach vorne bringen) und sehen, ob das das Kontrollkästchen der zugrunde liegenden Farbe ändert.

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