Affichage des contrôles sur un formulaire alpha-blended
-
02-07-2019 - |
Question
J'ai essayé le code Visual C # Kicks pour un formulaire alpha-fusionné . Cela fonctionne (dès que je supprime la propriété TransparencyKey
); Autrement dit, je peux utiliser la image de test alpha PNG du W3C et voir les autres fenêtres. dessous, mais rend tous les contrôles du formulaire invisibles. Vraisemblablement, ils ne sont tout simplement pas peints, car OnPaint
est remplacé. J'ai essayé d'appeler OnPaint
:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
UpdateFormDisplay()
MyBase.OnPaint(e)
End Sub
, mais cela n'a rien changé. (Appeler MyBase.OnPaint
en premier ne fait aucune différence non plus.)
Malheureusement, la plupart des articles sur les formulaires alpha-blended se concentrent sur les écrans de démarrage purs, sans contrôle - mais nous avons besoin d'un panneau affichant d'abord les champs de connexion, puis une barre de progression.
Les contrôles, d’ailleurs, n’ont pas besoin de transparence; ce n'est que sur les bords extérieurs que la transparence de la PNG compte vraiment. Donc, simuler cela en ajoutant un autre formulaire en plus de tout cela (les deux bougeant toujours en tandem) peut suffire, mais je préférerais une solution plus douce.
La solution
Étrange, de toute façon, cet article couvre une forme transformée en alpha avec des contrôles:
Autres conseils
Essayez de placer ceci dans votre formulaire après InitializeComponents ();
base.SetStyle (ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);