我有一个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()
但字体和粗体/斜体/等,没有提到强制特定大小。