gpt4 book ai didi

java - 用 Java Graphics.drawString 替换的充分理由?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:16 24 4
gpt4 key购买 nike

有谁知道现有的代码可以让您在 Java2D 中绘制完全对齐的文本?

例如,如果我说,drawString("sample text here", x, y, width),是否有一个现有的库可以计算出有多少文本适合宽度, 做一些字符间距以使文本看起来不错,并自动进行基本的自动换行?

最佳答案

虽然这不是最优雅也不是最可靠的解决方案,但这里有一个方法将采用 Font当前的 Graphics对象并获取其 FontMetrics为了找出绘制文本的位置,并在必要时移动到新行:

public void drawString(Graphics g, String s, int x, int y, int width)
{
// FontMetrics gives us information about the width,
// height, etc. of the current Graphics object's Font.
FontMetrics fm = g.getFontMetrics();

int lineHeight = fm.getHeight();

int curX = x;
int curY = y;

String[] words = s.split(" ");

for (String word : words)
{
// Find out thw width of the word.
int wordWidth = fm.stringWidth(word + " ");

// If text exceeds the width, then move to next line.
if (curX + wordWidth >= x + width)
{
curY += lineHeight;
curX = x;
}

g.drawString(word, curX, curY);

// Move over to the right for next word.
curX += wordWidth;
}
}

此实现将使用 split 将给定的 String 分隔成 String 数组。方法以空格字符作为唯一的单词分隔符,因此它可能不是很健壮。它还假定单词后跟一个空格字符,并在移动 curX 位置时相应地执行操作。

如果我是你,我不会推荐使用这个实现,但为了进行另一个实现所需的功能可能仍会使用 FontMetrics class 提供的方法。 .

关于java - 用 Java Graphics.drawString 替换的充分理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/400566/

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