美文网首页
关于在Canvas指定位置绘制文本的计算

关于在Canvas指定位置绘制文本的计算

作者: INeil | 来源:发表于2018-03-08 16:18 被阅读690次

    绘制文本api

    在Canvas上绘制文本使用的api
    Canvas.drawText(text,baselineX,baselineY,Paint)

    两个坐标系

    需要注意的是,此时涉及到2个坐标系,一个是Canvas的,一个是文本
    其中Canvas坐标系与常用的Android坐标系一致,左上角为原点[0,0]
    文本的坐标系如下图:

    文本坐标系
    文本坐标系可以看作是垂直一维的,其中红色的baseline为原点,向上为负值,向下为正值
    上图中top/ascent/descent/bottom,分别为该点到baseline的距离,可以通过FontMetric获得(Paint.getFontMetrics),粉色的center是没有的

    需求一:在Canvas上指定一个点pointTopY为绘制文字的top

    此时我们需要根据pointTopY的位置计算baselineXbaselineY
    显然pointTop.x即是baselineX
    baselineY=pointTopY-FontMetric.top -注意FontMetric.top的值为负值

    需求二:在Canvas上指定一个点pointCenterY为绘制文字的center

    baselineY=pointCenterY+((FontMetric.bottom-FontMetric.top)/2-FontMetric.bottom)
    简化一下
    baselineY=pointCenterY-FontMetric.bottom/2-FontMetric.top/2

    需求三:在Canvas上指定一个点pointBottomY为绘制文字的bottom

    baselineY=pointBottomY-FontMetric.bottom

    相关文章

      网友评论

          本文标题:关于在Canvas指定位置绘制文本的计算

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