Maison >développement back-end >C++ >Comment créer un contrôle circulaire translucide avec du texte en C# ?
Cet article résoudra un problème courant : comment créer un contrôle circulaire avec du texte et expliquera comment surmonter des défis tels que la transparence et le redimensionnement.
Le défi initial est de créer un cercle de la même largeur que le carré inscrit. Le redimensionnement du cercle le fait chevaucher d’autres contrôles. De plus, l’arrière-plan du contrôle doit être transparent.
Contrôles personnalisés avec transparence
Pour obtenir la transparence, nous créons un contrôle personnalisé dérivé de la classe Control. L'interface contient un cercle coloré pouvant afficher du texte. Le contrôle expose des propriétés personnalisées pour définir l'opacité, le remplissage interne (la distance entre le rectangle intérieur et les limites du contrôle) et le remplissage de la police (la distance entre le texte et le rectangle intérieur).
Afin de rendre le contrôle transparent, nous remplaçons la méthode CreateParams et définissons son ExStyle sur WS_EX_TRANSPARENT.
Style personnalisé
Nous utilisons la méthode Control.SetStyle() pour modifier le comportement du contrôle en ajoutant des ControlStyles :
Gestion des événements de souris
Le contrôle prend en charge les événements de souris pour le glisser et le redimensionnement.
Traitement des polices
La police est codée en dur sur Segoe UI, ce qui simplifie le positionnement du texte au milieu de la zone circulaire. D'autres polices ont des lignes de base différentes et nécessitent un traitement plus complexe.
Code complet
Le code complet du contrôle personnalisé C# a été fourni.
Pour utiliser le contrôle, créez un nouveau fichier de classe, collez-y le code fourni et construisez le projet. Le contrôle personnalisé apparaîtra dans la boîte à outils. Faites-le glisser et déposez-le sur le formulaire et ajustez ses propriétés personnalisées selon vos besoins.
Le résultat est un contrôle circulaire semi-transparent avec du texte qui peut être positionné et redimensionné sans chevaucher d'autres contrôles.
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!