所以我使用Canvas.drawText在Canvas上绘制一些字符串。问题是我想在它之前画一个矩形,这样文本就会出现在矩形的中心。但我遇到了一个真实的的问题。为drawText提供的x和y坐标实际上并不在真实的文本的“* 左上角 *”,而是在字符开始的行上。有一个方法Paint.getTextBounds,它返回一个矩形,该矩形在将要绘制的文本的 (0,0) 处“具有隐含的原点”。问题是原点在 (0,0)。这个盒子的宽度和高度是正确的,但是我不知道如何将它的左上角放在画布上画的字符串的左上角。我想我应该使用Fontaine,但是由于很多Fontaine返回的值都是未记录的,我真的不知道如何使用它们来实现我的目的。
3条答案
按热度按时间q1qsirdb1#
我最终做
它实际上绘制了以x,y为中心的文本。在此之前,我绘制一个以x,y为中心,宽度为**paint.measureText(text)**的矩形
brgchamk2#
尝试使用绘制矩形
canvas.drawRect(x, y - Paint.GetTextSize(), x + Paint.measureText("text"), y, Paint);
8i9zcol23#
文本周围的矩形
th是矩形和文本之间差距
textStart -文本的起始点(PointF)