É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 :
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) }
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!