Maison >développement back-end >C++ >Comment puis-je créer une superposition semi-transparente sur un formulaire Windows sans masquer les contrôles enfants ?
Obtenir une superposition semi-transparente dans les formulaires Windows sans masquer les contrôles enfants
Créer une superposition semi-transparente sur un formulaire Windows sans masquer les contrôles sous-jacents nécessite l'utilisation d'un deuxième formulaire superposé. Ce formulaire de superposition utilise la propriété Opacity
pour contrôler son niveau de transparence.
Pour créer cette superposition, ajoutez une nouvelle classe à votre projet et implémentez la classe Plexiglass
(comme indiqué dans l'exemple de code ci-dessous). Cette classe représentera notre formulaire de superposition.
<code class="language-csharp">public class Plexiglass : Form { // ... Code implementation ... }</code>
Créez une instance de la classe Plexiglass
, en passant le formulaire principal en paramètre :
<code class="language-csharp">var overlay = new Plexiglass(this);</code>
Le formulaire Plexiglass
ajustera dynamiquement sa position et sa taille pour correspondre au formulaire principal, garantissant ainsi une couverture cohérente. La fermeture de la superposition via overlay.Close()
restaurera la pleine visibilité du formulaire principal.
Pour un effet visuel plus fluide, pensez à désactiver les transitions Aero sur le formulaire principal pour éviter les animations discordantes :
<code class="language-csharp">if (Environment.OSVersion.Version.Major >= 6) { int value = 1; DwmSetWindowAttribute(this.Handle, DWMWA_TRANSITIONS_FORCEDISABLED, ref value, 4); }</code>
Cet extrait de code (en supposant que DwmSetWindowAttribute
soit correctement défini et importé) désactive les transitions Aero, ce qui donne une apparence de superposition plus transparente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!