美文网首页
drawText 的绘制位置

drawText 的绘制位置

作者: 涛涛123759 | 来源:发表于2019-05-22 16:33 被阅读0次

    drawText的四线格与 FontMetrics
    首先,我们看下这个方法参数的含义:canvas.drawText(text, x, y, paint),第一个参数是我们需要绘制的文本,第四个参数是我们的画笔,这两个不用多说,主要是第二和第三个参数的含义,这两个参数在不同的情况下的值还是不一样的,x默认是这个字符串的左边在屏幕的位置,如果设置了paint.setTextAlign(Paint.Align.CENTER);那就是字符的中心,y是指定这个字符baseline在屏幕上的位置,大家记住了,不要混淆,y不是这个字符中心在屏幕上的位置,而是baseline在屏幕上的位置。

    绘制 Text 是依据 基线 来进行绘制的,其实系统在绘制 Text 时,还有其他线存在的,而 基线 只是用来绘制 Text 的一个标准线


    从上图可以看出,除了 基线 以外,还有另外 四 条线,分别是 top、bottom、ascent、descent、它们所表示的意思分别是:

    top:可绘制的最高高度所在线,及基线(base)上方的最大距离
    ascent:系统建议的,绘制单个字符时,字符应当的最高高度所在线,及在基线(base)上方被推荐的距离。
    descent:系统建议的,绘制单个字符时,字符应当的最低高度所在线,及在基线(base)下方被推荐的距离
    bottom:可绘制的最低高度所在线,及基线(base)下方的最大距离

    //文字的高度
    Paint.FontMetrics fm = paint.getFontMetrics();
    float textHeight = fm.descent - fm.ascent;
    return textHeight;
    
    //基线在屏幕上的位置
    Paint.FontMetrics fm = mTextLeftPaint.getFontMetrics();
    float textHeight = fm.descent - fm.ascent;
    float baseLine = (textHeight - fm.bottom - fm.top) / 2;
    

    或:

    String text = "Android";
    Rect rect = new Rect();
    mPaint.getTextBounds(text, 0, text.length(), rect);
    int width = rect.width();//文本的宽度
    int height = rect.height();//文本的高度
    

    相关文章

      网友评论

          本文标题:drawText 的绘制位置

          本文链接:https://www.haomeiwen.com/subject/biqjzftx.html