Création d'une superposition semi-transparente sur Windows Forms
Cet article explique comment superposer une image semi-transparente sur un Windows Form sans obstruer la visibilité ou la fonctionnalité de ses contrôles enfants. La clé consiste à utiliser un formulaire séparé et transparent positionné sur le dessus.
Voici un guide étape par étape :
Développer une classe de formulaire personnalisé :
Créez une nouvelle classe (par exemple, OverlayForm
) pour gérer la superposition. Cette classe héritera de System.Windows.Forms.Form
. Incluez les using
déclarations nécessaires :
<code class="language-csharp">using System; using System.Drawing; using System.Windows.Forms; using System.Runtime.InteropServices;</code>
Configurer le formulaire de superposition :
Instanciez votre classe OverlayForm
, en spécifiant le formulaire à superposer (par exemple, mainForm
). Définissez ses propriétés comme suit :
<code class="language-csharp">OverlayForm overlay = new OverlayForm(mainForm);</code>
BackColor
: définissez la couleur souhaitée (par exemple, Color.DarkGray
).Opacity
: Ajustez pour contrôler la transparence (par exemple, 0.30
pour une opacité de 30 %).FormBorderStyle
: définissez sur FormBorderStyle.None
pour supprimer les bordures.ControlBox
: Réglez sur false
pour masquer le boîtier de commande.ShowInTaskbar
: défini sur false
pour l'empêcher d'apparaître dans la barre des tâches.StartPosition
: Réglez sur FormStartPosition.Manual
pour un positionnement précis.Maintenir la synchronisation :
Gérez les événements LocationChanged
et ClientSizeChanged
du formulaire sous-jacent (mainForm
) pour garantir que la position et la taille du formulaire de superposition s'ajustent dynamiquement.
Désactiver les transitions aérodynamiques (Vista et versions ultérieures) :
Pour éviter les problèmes visuels avec les effets de verre Aero, désactivez-les à l'aide de DwmSetWindowAttribute
(nécessite System.Runtime.InteropServices
).
Gérer les événements de clôture :
Lorsque le formulaire de superposition se ferme, restaurez tous les paramètres modifiés sur le formulaire sous-jacent et réactivez les transitions Aero si nécessaire.
Empêcher l'activation de la superposition :
Remplacez l'événement OnActivated
du formulaire de superposition pour l'empêcher d'obtenir le focus et redirigez-le plutôt vers le formulaire sous-jacent.
Mise en œuvre :
Affichez et masquez la superposition selon vos besoins à l'aide des méthodes overlay.Show()
et overlay.Close()
.
Cette méthode fournit une superposition semi-transparente sans interférer avec la convivialité des contrôles enfants du formulaire sous-jacent. N'oubliez pas de gérer les exceptions potentielles et les cas extrêmes pour une solution robuste.
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!