Je viens d'écrire du code pour redimensionner une police afin qu'elle corresponde à (la longueur) d'un rectangle. Il commence à 18 largeurs et se rétrécit jusqu'à ce qu'il s'adapte.J'ai besoin d'un moyen de mettre à l'échelle une police pour l'adapter à un rectangle
Cela semble terriblement inefficace, mais je ne trouve pas de moyen de le faire en boucle. Cette ligne est pour les étiquettes dans une grille de jeu qui évolue, donc je ne peux pas voir une solution de contournement (emballer, couper et dépasser le rectangle sont tous inacceptables).
En fait, c'est assez rapide, je le fais pour des centaines de rectangles et c'est assez rapide pour le ralentir au toucher.
Si personne ne trouve quelque chose de mieux, je vais juste charger le devin de départ à partir d'une table (de sorte qu'il est beaucoup plus proche que 18) et l'utiliser - sauf pour le décalage ça marche très bien.
public Font scaleFont(String text, Rectangle rect, Graphics g, Font pFont) {
float nextTry=18.0f;
Font font=pFont;
while(x > 4) {
font=g.getFont().deriveFont(nextTry);
FontMetrics fm=g.getFontMetrics(font);
int width=fm.stringWidth(text);
if(width <= rect.width)
return font;
nextTry*=.9;
}
return font;
}
Huh. Il s'avère que Netbeans n'aime pas trop utiliser 'try' comme identifiant ... – Tharwen