Ho appena scritto del codice per ridimensionare un font per adattarlo alla lunghezza di un rettangolo. Inizia a 18 larghezze e scorre fino a quando non si adatta.Hai bisogno di un modo per ridimensionare un font per adattarlo a un rettangolo
Questo sembra orribilmente inefficiente, ma non riesco a trovare un modo non ciclico per farlo. Questa riga è per le etichette in una griglia di gioco che si ridimensiona, quindi non riesco a vedere una soluzione di aggiramento (avvolgere, tagliare e estendere oltre il rettangolo sono inaccettabili).
In realtà è piuttosto veloce, lo sto facendo per centinaia di rettangoli ed è abbastanza veloce da rallentare un tocco.
Se nessuno riesce a fare qualcosa di meglio, mi basterà caricare l'ipotesi iniziale da un tavolo (in modo che sia molto più vicino di 18) e usarlo - tranne che per il ritardo che funziona.
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. Si scopre che Netbeans non ama troppo usare 'try' come identificatore ... – Tharwen