Bil*_*l K 13 java graphics fonts awt
我刚刚编写了一些代码来缩放字体以适应矩形(长度).它从18宽度开始并向下迭代直到它适合.
这似乎非常低效,但我找不到一种非循环方式来做到这一点.此行适用于可缩放的游戏网格中的标签,因此我无法看到解决方案(包裹,切断和延伸超过矩形都是不可接受的).
它实际上非常快,我正在为数百个矩形做这个,它的速度足以让它减慢触摸速度.
如果没有人提出更好的东西,我只会从表中加载起始猜测(因此它比18更接近)并使用它 - 除了延迟效果很好.
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;
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*fer 20
半假代码:
public Font scaleFont(String text, Rectangle rect, Graphics g, Font pFont) {
float fontSize = 20.0f;
Font font = pFont;
font = g.getFont().deriveFont(fontSize);
int width = g.getFontMetrics(font).stringWidth(text);
fontSize = (rect.width / width ) * fontSize;
return g.getFont().deriveFont(fontSize);
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么你传递pFont,因为它没有使用...