0

我有一个SurfaceView我正在绘制矩阵(游戏板)的地方,矩阵的每个单元格的高度和宽度都是 40 像素。

在这些单元格中,我必须按照以下方式存储一个类似 Scrabble 的图块:

+---------+
|    #    |
|   # #   |
|  #   #  |
|  #####  |
|  #   #  |
|       17|
+---------+

字母始终是单个字母,数字始终是数字,最多两位数。

为了做到这一点,我实际上已经计算了单元格左上角像素在我的表面上的位置,我想要做的是将字母和数字绘制成特定的规格。

我需要确保数字适合给定区域(例如右下角的 10x10 单元格),并且字母在图块中居中而不会侵犯数字区域。

我目前计划使用Paint.getTextBounds()来计算最大字母和数字的大小,如果发现大小太大,我会简单地用较小的字体来做。

当然,我愿意接受有关更好方法的建议。即使没有更好的方法,我仍然有问题。

我设置绘画对象的方式是:

numPaint = new Paint();
numPaint.setStrokeWidth(1);
numPaint.setColor(Color.BLACK);

文字的实际绘制很简单:

canvas.drawText(Integer.toString(num), pixcol + 30, pixrow + 30, numPaint);

确实将数字按预期放置在单元格的右下角,但我从未指定字体大小或任何其他可能阻止文本超出单元格的内容,例如,它最终为 15x15在尺寸方面。

它似乎完全靠运气。无论如何,我以alphaPaint完全相同的方式设置对象,但我希望它更大一点。

对不起,我只是想确保所有的细节都在那里。底线问题是:我们如何设置绘画对象的字体大小?该对象有一个getFontMetrics()但似乎没有set...等价物。最初看起来很有希望,setTypeface()但字体和粗体/斜体/等,没有提到强制特定大小。

4

1 回答 1

2

要设置字体大小,请使用numPaint.setTextSize(). 这是文档的链接public void setTextSize (float textSize)

于 2012-07-05T09:03:20.817 回答