"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-12
Parcourir:356

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 frontalière. 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3