Obtenir un arrière-plan transparent avec des bords lisses pour un formulaire Windows peut être délicat. Cet article présente deux solutions efficaces.
Pour les formulaires aux formes complexes, les fenêtres en couches offrent la meilleure solution. Ils rationalisent la composition et la repeinture des fenêtres, ce qui permet d'obtenir un rendu fluide sans le scintillement souvent observé avec les formes complexes. Surtout, ils prennent également en charge la translucidité.
Implémentation de fenêtres en couches
Pour créer une fenêtre en couches dans Windows Forms, utilisez le code de la galerie de codes du SDK Microsoft (lien vers le code si disponible). En étendant la classe PerPixelAlphaForm
, vous pouvez utiliser la méthode SelectBitmap
pour appliquer votre image PNG transparente.
PerPixelAlphaForm.cs
Extrait de code <code class="language-csharp">public partial class PerPixelAlphaForm : Form { // ... constructor and other methods ... public void SelectBitmap(Bitmap bitmap) { // ... implementation to apply the bitmap ... } }</code>
SplashScreen.cs
(Exemple d'utilisation)<code class="language-csharp">public partial class Form4 : CSWinFormLayeredWindow.PerPixelAlphaForm { // ... constructor and other methods ... }</code>
Considération importante :
Une approche antérieure impliquait de désactiver la double mise en mémoire tampon et de remplacer OnPaintBackground
pour dessiner l'image directement, en évitant la méthode de base. Cependant, cette méthode souffrait d’un inconvénient majeur : bien que statique, la transparence fonctionnait parfaitement. Mais le déplacement du formulaire ou la modification de la fenêtre sous-jacente entraînait des artefacts visuels et un échec de mise à jour correcte. La méthode de fenêtre en couches présentée ici surmonte cette limitation.
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!