gpt4 book ai didi

Java Graphics Font - 如何确保文本保持在一行?

转载 作者:行者123 更新时间:2023-12-01 15:27:21 27 4
gpt4 key购买 nike

使用 Graphics2D,我想在图像中显示文本,但我希望它显示在一行中。这意味着如果文本比图像长,尺寸将会减小(调整)

我该怎么办?

到目前为止,这就是我所做的,但我确信这真的很糟糕。

int fontSize = 66;
FontRenderContext frc = new FontRenderContext(null, true, true);
element = null;

do { // we turn until the size goes into the image
fontSize -= 2;
layout = new TextLayout(myText, new Font(font, Font.BOLD, fontSize), frc);
element = layout.getPixelBounds(null, 0, 0);

if (fontSize <= 12) {
throw new Exception ("Title too long.");
}
} while(element.width > image.getWidth());

我该怎么办?

感谢您的帮助。

最佳答案

当我将文本放入特定显示的圆圈内时,我必须做同样的事情。您唯一可以做得更好的事情是,不要使搜索成为线性搜索,而是使其成为二进制搜索。这将为您带来更好的整体性能。除此之外,您的方法很好 - 我认为这与您在 Java 中将文本调整到特定屏幕尺寸一样好。

还有一些编码语义问题 - 如果您在常规 while 循环中执行此操作,这可能会更具可读性。

另一个问题是您抛出的异常。最好将其放入一个返回某个值的函数中,该值指示文本是否可以绘制在特定图像上。如果使用简单的条件语句可以获得相同的行为,那么使用抛出的异常来确定程序逻辑绝不是一件好事。

关于Java Graphics Font - 如何确保文本保持在一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com