Maison > développement back-end > C++ > Comment créer un arrière-plan transparent avec une forme de bord lisse pour un formulaire Windows ?

Comment créer un arrière-plan transparent avec une forme de bord lisse pour un formulaire Windows ?

Barbara Streisand
Libérer: 2025-01-11 09:06:41
original
998 Les gens l'ont consulté

How to Create a Transparent Background with a Smooth Edge Shape for a Windows Form?

Obtenir des arrière-plans transparents avec des formes personnalisées dans Windows Forms

Les méthodes standard telles que SupportsTransparentBackColor et TransparencyKey échouent souvent lors de la création de formulaires transparents avec des formes personnalisées. Une solution supérieure consiste à exploiter les fenêtres en couches.

Fenêtres en couches : une approche supérieure

Les fenêtres en couches offrent des performances significatives et des améliorations visuelles pour les fenêtres avec des formes complexes, des animations ou un mélange alpha. Le système gère la composition et la repeinture, ce qui entraîne un rendu plus fluide et une translucidité partielle.

Implémentation de fenêtres en couches dans Windows Forms

La classe PerPixelAlphaForm fournit les fonctionnalités nécessaires. Cette classe intègre le style étendu WS_EX_LAYERED, permettant l'utilisation d'un bitmap comme arrière-plan du formulaire.

Étapes de mise en œuvre

Pour créer une fenêtre en couches avec une forme personnalisée :

  1. Intégrer PerPixelAlphaForm : Ajoutez la classe PerPixelAlphaForm à votre projet. Cette classe fournit la fonctionnalité de base pour créer des fenêtres en couches.
  2. Héritage : Créez votre formulaire en héritant de PerPixelAlphaForm. Cela donne accès aux propriétés des fenêtres en couches et à la méthode SelectBitmap.
  3. Sélection Bitmap : Utilisez la méthode SelectBitmap en transmettant l'image PNG souhaitée. Cela définit le bitmap comme arrière-plan, permettant des ajustements d'opacité.

Illustration des codes

La fonctionnalité principale de la méthode SelectBitmap est illustrée ci-dessous :

<code class="language-c#">public void SelectBitmap(Bitmap bitmap, int opacity)
{
    // ... (Code to configure layered window and select bitmap) ...

    // Update the window with the new bitmap and opacity
    UpdateLayeredWindow(
        this.Handle,     // Handle to the layered window
        screenDc,        // Handle to the screen DC
        ref newLocation, // New screen position of the layered window
        ref newSize,     // New size of the layered window
        memDc,           // Handle to the layered window surface DC
        ref sourceLocation, // Location of the layer in the DC
        0,               // Color key of the layered window
        ref blend,       // Transparency of the layered window
        ULW_ALPHA        // Use blend as the blend function
    );
}</code>
Copier après la connexion

Application pratique : écran de démarrage en forme

Pour créer un écran de démarrage en forme :

  1. Lancez un nouveau projet Windows Forms.
  2. Incorporer la classe PerPixelAlphaForm.
  3. Développer un formulaire SplashScreen qui hérite de PerPixelAlphaForm.
  4. Dans le constructeur du formulaire SplashScreen, appelez SelectBitmap avec l'image PNG de votre choix.

En utilisant des fenêtres superposées, vous pouvez créer de manière transparente des formulaires avec des arrière-plans transparents et des formes personnalisées aux bords lisses, ce qui donne lieu à des applications plus attrayantes visuellement.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal