计算渲染的文本字符串的尺寸(在渲染之前)

时间:2013-01-11 14:16:27

标签: java string canvas paint

我想在中间完美地对齐由画布绘制的字符串。所以,如果我有这样的代码

Paint p = new Paint();
Canvas c = holder.lockCanvas();

String centered_text = "Hello World";

然后设置我的Paint 样式 size

p.setTextSize(35);
p.setStyle(Style.STROKE);

现在我要在中间绘制我的字符串

c.drawText(centered_text, c.getWidth()/2, c.getHeight()/2, p);

但这实际上并不是我的文字的中心,它会将左上角放在中心位置。为了使它居中,我需要知道字符串的长度和高度(以像素为单位)而不是字符。

int string_width = centered_text.getWidth(); //String.getWidth() is not a real methode
int string_height = centered_text.getHeight(); //String.getHeight() is not a real methode

c.drawText(centered_text, (c.getWidth()/2)-(string_width/2), (c.getHeight()/2)-(string_height/2), p);

这会使文字居中,但String.getWidth()String.getHeight()不是真正的方法。所以我的想法是使用文本大小字符串大小来查找宽度高度。所以有以下几点:

int string_width = centered_text.length()*p.getTextSize();
int string_height = p.getTextSize();

但我觉得这是错的,因为不同的字符大小不同......任何人都有任何想法。

1 个答案:

答案 0 :(得分:0)

假设你在Java Swing中,你想要的是FontMetrics

new FontMetrics(canvas.getFont()).getStringBounds(someString, canvas.getGraphics());

将返回一个Rectangle2D,其中包含字符串的大小。