理解Canvas绘制文字及canvas.drawText()的绘制位置

参考文章:HenCoder Android 开发进阶:自定义 View 1-3 drawText() 文字的绘制https://hencoder.com/ui-1-3/

Canvas 的文字绘制方法有三个:
drawText()
drawTextRun()
drawTextOnPath()

给出文字的内容和位置, Canvas 按要求去绘制文字。以其中一个方法为例:
drawText(String text, float x, float y, Paint paint)
text 是文字内容,x 和 y 是文字的坐标。
但需要注意:这个坐标并不是文字的左上角,而是一个与左下角比较接近的位置。

理解Canvas绘制文字及canvas.drawText()的绘制位置_第1张图片

drawText() 参数中的 y ,指的是文字的基线( baseline ) 的位置。

众所周知,不同的语言和文字,每个字符的高度和上下位置都是不一样的。要让不同的文字并排显示的时候整体看起来稳当,需要让它们上下对齐。

让所有文字互相对齐的基准线,就是基线( baseline )

其它的 Canvas.drawXXX() 方法,都是以左上角作为基准点的。

说完 y 值,再说说 x 值。从前面图中的标记可以看出来,「Hello HenCoder」绘制出来之后的 x 点并不是字母 “H” 左边的位置,而是比它的左边再往左一点点。那么这个「往左的一点点」是什么呢?

它是字母 “H” 的左边的空隙。绝大多数的字符,它们的宽度都是要略微大于实际显示的宽度的。字符的左右两边会留出一部分空隙,用于文字之间的间隔,以及文字和边框的间隔。就像这样:

理解Canvas绘制文字及canvas.drawText()的绘制位置_第2张图片

你可能感兴趣的:(自定义View,安卓客户端)