Comment dessiner un rectangle arrondi en java avec la normale contour rectangulaire
Pour mon application java j'ai besoin d'un rectangle arrondi avec un contour qui ressemble à un rectangle, comme ce
Je sais que vous pouvez le faire en dessinant un rectangle normal et un RoundRect à l'intérieur, mais je ne veux pas tirer un RoundRect à l'intérieur parce que je veux dessiner quelque chose d'autre.
Donc un round rect avec normal des coins. Comment puis-je dessiner qu'en Java?
Le problème est que le rectangle ressemble à ça si j'utilise des couches:
Les coins sont remplis avec de la bonne couleur. Comment puis-je éviter cela?
Ne pouvez-vous pas empiler des couches et dessinez un rectangle, ajouter un RoundRect couche, puis ajouter une autre couche contenant ce dont vous avez besoin à l'intérieur de la zone blanche?
Aussi, vous devez ajouter une balise correspondant à la bibliothèque graphique que vous utilisez (swing?).
"je sais que vous pouvez le faire en dessinant un rectangle normal et un RoundRect à l'intérieur, mais je ne veux pas tirer un RoundRect à l'intérieur parce que je veux dessiner quelque chose d'autre."</j'ai> Donc tirer "quelque chose" en dernier. Je ne vois vraiment pas le problème ici.
Peut-être un supplément de
Aussi, vous devez ajouter une balise correspondant à la bibliothèque graphique que vous utilisez (swing?).
"je sais que vous pouvez le faire en dessinant un rectangle normal et un RoundRect à l'intérieur, mais je ne veux pas tirer un RoundRect à l'intérieur parce que je veux dessiner quelque chose d'autre."</j'ai> Donc tirer "quelque chose" en dernier. Je ne vois vraiment pas le problème ici.
Peut-être un supplément de
drawRoundRect(x, y, w, h, 1, 1)
avec une largeur de tracé permettrait de remplir les triangles?OriginalL'auteur user2016175 | 2013-01-27
Vous devez vous connecter pour publier un commentaire.
Je pense à deux approches. La première est de générer un
Shape
que représente le carré outter bord arrondi de l'arête intérieure.La deuxième serait d'utiliser un
AlphaComposite
pour générer un masqués résultat.Mis à jour avec la Forme exemple
Enfin eu le temps de taper...
Mis à jour
À partir d'un commentaire d'Andrew, vous pouvez simplifier l'utilisation de la forme par exemple à l'aide de
Area
Vous pouvez remplacer le
paintComponent
à partir de l'exemple ci-dessus avec celui-ci...Qui est beaucoup plus simple 😀
+1 très sympa....
OriginalL'auteur MadProgrammer
Quelque chose comme:
E. G.
J'espère que vous ne me dérange pas de me l'édition de votre réponse pour ajouter un SSCCE. J'aurais ajouté ma propre réponse si vous n'aviez pas dit d'abord.
merci pour les embellissements. Je vais essayer de suivre l'exemple. Désolé de ne pas poster votre réponse.
J'ai aimé vos deux approches (et serait probablement utiliser un
Area
pour définir le combinéShape
) mais a estimé qu'il était important de corriger la Fpo hypothèse que ceci ne peut être réalisé à l'aide de la technique décrite par Joop.LOL. Je ne écrémé votre post, vu "Forme" et deviné que c'était la façon dont vous l'avez fait! Je devrais peut-être ajouter un 4ème exemple de la façon dont je le voulais. Mais wow.. le vrai problème ici n'est pas " comment faire cela?', mais " comment choisir parmi la myriade de les façons possibles pour faire cela?'. 🙂
OriginalL'auteur Joop Eggen