0 前言
Canvas.drawText(String text, float x, float y, Paint paint) 这个方法在绘制文本时是从以什么为基线向什么地方开始绘制呢,水平方向上,可以通过设置 setTextAlign(Paint.Align.??) 来设置基线在文本左边、右边或者中间。但是垂直方向上是在哪呢?
1 知道基线的位置后如何确定 Canvas.drawText 的 y 值
假设以文本底部为基线,向上画。即如下图所示:
按照这种说法,如果我想让文本在一个矩形中垂直方向上居中,这时,Canvas.drawText 中 y 就为 a + text.height / 2。或者是另外一种说法,a + (文本 “Text” 垂直方向上的中线与基线的距离 )
如果不是以文本底部为基线,而假设是基线和文本有一定距离,这时 Canvas.drawText 中 y 就很好理解了。a + (文本 “Text” 垂直方向上的中线与基线的距离 )
文章来源:https://www.toymoban.com/news/detail-488435.html
2 如何确定基线与 Text 的位置关系
通过 Paint.getTextBounds(String text, int start, int end, Rect rect),我们可以得到一个矩形值 rect,我们将这个矩形画出来,就比如我使用代码Paint.getTextBounds(“1”, int start, int end, Rect rect)。
Paint.getTextBounds(“*”, int start, int end, Rect rect)。
这个最小矩形就是位置就是以(0,0)为基线的结果。这个矩形与(0,0)的位置关系就是文本与基线的位置关系 这时我们要求文本 “Text” 垂直方向上的中线与基线的距离就很简单了。文章来源地址https://www.toymoban.com/news/detail-488435.html
3 垂直方向上居中方案
String content;
Rect textRect = new Rect();
Paint paint = new Paint;
paint.set....;
paint.getTextBounds(content, 0, content.length(), textRect);
int height = 0 - (textRect.top + textRect.bottom) / 2;
float y = a + height; // 这里 a 是框高度的一半
canvas.drawText(content, x, y, textPaint);
到了这里,关于Canvas.drawText 是以哪里为基线往什么方向开始画的。有什么居中方案?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!