相关疑难解决方法(0)

需要一种缩放字体以适合矩形的方法

我刚刚编写了一些代码来缩放字体以适应矩形(长度).它从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)

java graphics fonts awt

13
推荐指数
1
解决办法
8184
查看次数

Java字体大小从宽度

我正在寻找一种从宽度推断 Java AWT 字体大小的方法。例如,我知道我想在 100 像素内写出“hello world”。我知道我在 style 中使用字体“Times”,Font.PLAIN并且我想获得最适合我给定的 100 像素宽度的字体大小。

我知道我可以在循环中计算它(类似于while(font.getSize() < panel.getWidth()),但老实说,我觉得它不是很优雅。

java fonts awt

5
推荐指数
1
解决办法
4376
查看次数

标签 统计

awt ×2

fonts ×2

java ×2

graphics ×1