Coins transparents dans la bordure avec coins arrondis
Dans le code donné, la classe TextBubbleBorder peint un rectangle arrondi avec un pointeur triangulaire en bas . Cependant, les coins à l'extérieur du rectangle s'étendent un peu, montrant la couleur d'arrière-plan du panneau parent. Pour obtenir des coins transparents, nous modifions la méthode paintBorder pour inclure une étape supplémentaire :
// 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 vérifie si le composant a un parent, récupère sa couleur d'arrière-plan et crée un rectangle représentant toute la région de bordure. Il crée ensuite un objet Area borderRegion qui représente ce rectangle. Ensuite, il soustrait la zone représentant la bulle de texte de borderRegion, créant une zone appelée clip qui représente la zone en dehors de la bulle de texte.
Avec clip, le code définit la région de découpage de l'objet Graphics2D, la remplit avec la couleur d'arrière-plan du parent, puis réinitialise la zone de découpage pour dessiner la bordure elle-même. Cela garantit que les coins à l'extérieur du rectangle arrondi deviennent transparents, affichant la couleur d'arrière-plan du 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!