Maison >Java >javaDidacticiel >Comment rendre les coins TextBubbleBorder transparents en dehors du rectangle ?

Comment rendre les coins TextBubbleBorder transparents en dehors du rectangle ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-06 10:41:02925parcourir

How to Make TextBubbleBorder Corners Transparent Outside the Rectangle?

Bordure de bulle de texte transparente à l'extérieur du rectangle

La classe "TextBubbleBorder" permet aux utilisateurs de créer des bordures rectangulaires arrondies autour de composants avec une épaisseur, des rayons, des rayons personnalisables. et la taille du pointeur. Récemment, il a été demandé que les coins de la bordure à l'extérieur du rectangle soient rendus transparents pour afficher les composants sous-jacents.

Le problème

Au départ, une approche a été tentée pour effacez la couleur d'arrière-plan d'une étiquette en dehors de la bordure en utilisant un clip et en appelant "clearRect()". Bien que cette approche limite la couleur d'arrière-plan à l'intérieur de la bordure, elle ne résout pas complètement le problème dans les cas où il existe une couleur non standard dans le conteneur parent.

La solution

Pour résoudre ce problème, la solution acceptée consiste à peindre la couleur d'arrière-plan du composant parent partout en dehors du clip de la bulle de texte. Ceci est accompli en suivant les étapes suivantes :

  1. Obtenez le composant parent du composant avec la bordure.
  2. Créez une "Zone" représentant la région frontalière en soustrayant la zone de la bulle de texte de un rectangle représentant la zone entière du composant.
  3. Utilisez cette région de bordure comme clip pour peindre la couleur d'arrière-plan du parent.

En suivant cette approche, les coins à l'extérieur du rectangle deviennent transparents, permettant aux composants sous-jacents d'être visibles. L'exemple de code fourni met à jour la classe "TextBubbleBorder" pour incorporer cette solution.

Remarque :

Il est important de souligner qu'il existe un bug d'écrêtage dans le code que vous avez fourni. , qui est résolu dans la réponse acceptée à une autre question connexe. Cette mise à jour doit être intégrée à la solution de transparence pour des résultats optimaux.

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