Ich bin auf der Suche nach einem Weg zu AlphaBlenden Sie ein untergeordnetes Formular, wenn möglich mit Ebenen Fenstern, da interaktive Steuerelemente dahinter sein wird.AlphaBlend ein Kind Formular
Das Problem ist, ich habe eine Komponente in einem regulären TForm, die mehrere visuelle Ebenen (Zeichnungen, Bilder ...) malt. Irgendwann muss ich ein Editor-Steuerelement in diesem Formular instanziieren (in-Place), dieses Steuerelement wird eine Vielzahl von Standard-Eingabesteuerungen außerhalb meiner Kontrolle (Bearbeitungsfeld, Kontrollkästchen, usw.) umfassen, jedoch möchte ich überlagern Die Ebenen vor der Ebene werden mit Alpha Blending bearbeitet (und WS_EX_TRANSPARENT
, um sie durchzuklicken).
Zuerst dachte ich daran, kindliche Formen dafür zu verwenden (randlos TForm
s parentered zu der Komponente), und das funktioniert gut, bis zu dem Punkt, wo das AlphaBlended TForm überhaupt nicht alphablended ist, aber undurchsichtig wird, sobald parentered ...
Ich habe dann versucht, die alphablended Form zu entfremden, setzen Sie es auf fsStayOnTop und reagieren auf die relevanten Ereignisse, halten Sie es vor der Komponente auf dem Bildschirm, das funktioniert, aber das ist nicht wirklich befriedigend Lösung: Das alphablended StayOnTop Formular ist auch vor anderen modalen und nicht modalen Formen der Anwendung, sollte der Benutzer entscheiden, sie vor der Komponente zu bewegen ...
Also, irgendwelche anderen Ideen auf einer Weise, eine Kindform zu haben, alphablended sein? (oder verhalten sich wie es ist)
Der ws_ex_Transparent Stil macht das Fenster nicht immun gegen Mausereignisse. Dieser Stil beeinflusst nur die Reihenfolge der Bilder. Wenn Sie keine Mausereignisse erhalten möchten, verwenden Sie SetWindowRgn, um "Löcher" im Fenster zu erzeugen. –