Maison > Java > javaDidacticiel > Comment obtenir des coins transparents dans une bordure rectangulaire arrondie ?

Comment obtenir des coins transparents dans une bordure rectangulaire arrondie ?

Patricia Arquette
Libérer: 2024-11-07 14:35:03
original
261 Les gens l'ont consulté

How to Achieve Transparent Corners in a Rounded Rectangle Border?

Bordure avec coins arrondis et transparence : élimination des coins d'arrière-plan

Énoncé du problème :

La requête tourne autour de TextBubbleBorder, un bordure personnalisée conçue pour les zones de texte. Cependant, lorsque la bordure est utilisée pour créer un rectangle arrondi (en réglant la taille du pointeur à zéro), les coins à l'extérieur du rectangle sont restés opaques, affichant la couleur du panneau par défaut au lieu de la transparence souhaitée.

Présentation de la solution :

La clé pour obtenir la transparence dans les coins des bordures réside dans la peinture de la couleur d'arrière-plan du composant parent sur les zones en dehors du rectangle arrondi. Cela implique :

  1. Identifier la région en dehors de la frontière (à l'aide d'une zone).
  2. Créer un chemin de détourage qui exclut cette région.
  3. Définir le clip du contexte graphique au chemin de détourage.
  4. Dessiner l'arrière-plan parent.
  5. Restauration du clip original.

Code modifié :

La méthode paintBorder modifiée suivante dans la classe TextBubbleBorder intègre les étapes ci-dessus :

@Override
public void paintBorder(
        Component c,
        Graphics g,
        int x, int y,
        int width, int height) {

    Graphics2D g2 = (Graphics2D) g;

    // ... (unchanged code)

    // Paint the BG color of the parent, everywhere outside the clip
    // of the text bubble.
    Component parent  = c.getParent();
    if (parent!=null) {
        Color bg = parent.getBackground();
        Rectangle rect = new Rectangle(0,0,width, height);
        Area borderRegion = new Area(rect);
        borderRegion.subtract(area);
        g2.setClip(borderRegion);
        g2.setColor(bg);
        g2.fillRect(0, 0, width, height);
        g2.setClip(null);
    }

    // ... (unchanged code)
}
Copier après la connexion

Résultat :

Cette modification dessine efficacement l'arrière-plan parent dans les zones en dehors de la classe TextBubbleBorder. coins arrondis, produisant la bordure transparente souhaitée. Vous pouvez désormais créer un rectangle arrondi avec une bordure transparente qui s'intègre parfaitement à son composant parent.

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