Maison  >  Article  >  Java  >  Comment créer une bordure arrondie avec transparence en Java ?

Comment créer une bordure arrondie avec transparence en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-17 16:23:02145parcourir

How to Create a Rounded Border with Transparency in Java?

Bordure avec coins arrondis et transparence

Cette question aborde le problème de la création d'une bordure arrondie avec transparence, permettant au composant sous-jacent de transparaître . La solution consiste à modifier la classe TextBubbleBorder pour peindre la couleur d'arrière-plan du parent en dehors de la région de découpage de la bordure.

Solution :

La modification apportée à la classe TextBubbleBorder est la suivante suit :

// 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);
}

Ce code récupère le composant parent et sa couleur de fond. Il crée ensuite une zone représentant la région frontalière et en soustrait les zones de bulles et de pointeurs. Ceci définit la région à l'extérieur de la bordure.

Une fois la région de découpage définie, le code remplit la région avec la couleur d'arrière-plan du composant parent, rendant la bordure transparente en dehors des coins arrondis.

Considérations supplémentaires :

  • Un bug existe dans le code d'origine, provoquant un problème d'écrêtage. Ce bug a été corrigé dans le "clipping bug fix" pour la méthode paintComponent().
  • En définissant la taille du pointeur à 0, la bordure se transforme en un rectangle arrondi standard.
  • Un paramètre left est introduit dans le constructeur TextBubbleBorder pour créer des bulles alignées à droite si défini sur false.

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!

Déclaration:
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