Maison >Java >javaDidacticiel >Comment obtenir des coins transparents dans un rectangle arrondi avec un pointeur triangulaire ?

Comment obtenir des coins transparents dans un rectangle arrondi avec un pointeur triangulaire ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 22:11:02779parcourir

How to Achieve Transparent Corners in a Rounded Rectangle with a Triangular Pointer?

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!

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