怎么在Android中使用FontMetrics对象计算坐标

这期内容当中小编将会给大家带来有关怎么在Android中使用FontMetrics对象计算坐标,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Canvas绘制文本时,使用FontMetrics对象,计算位置的坐标。

publicstaticclassFontMetrics{
/**
*Themaximumdistanceabovethebaselineforthetallestglyphin
*thefontatagiventextsize.
*/
publicfloattop;
/**
*Therecommendeddistanceabovethebaselineforsingledspacedtext.
*/
publicfloatascent;
/**
*Therecommendeddistancebelowthebaselineforsingledspacedtext.
*/
publicfloatdescent;
/**
*Themaximumdistancebelowthebaselineforthelowestglyphin
*thefontatagiventextsize.
*/
publicfloatbottom;
/**
*Therecommendedadditionalspacetoaddbetweenlinesoftext.
*/
publicfloatleading;
}

它的各基准线可以参考下图:

怎么在Android中使用FontMetrics对象计算坐标

上图其实是通过代码画出来的,具体代码如下:

/**绘制FontMetrics对象的各种线*/
mPaint.reset();
mPaint.setColor(Color.WHITE);
mPaint.setTextSize(80);
//FontMetrics对象
FontMetricsfontMetrics=mPaint.getFontMetrics();
Stringtext="abcdefg";
//计算每一个坐标
floattextWidth=mPaint.measureText(text);
floatbaseX=30;
floatbaseY=700;
floattopY=baseY+fontMetrics.top;
floatascentY=baseY+fontMetrics.ascent;
floatdescentY=baseY+fontMetrics.descent;
floatbottomY=baseY+fontMetrics.bottom;
//绘制文本
canvas.drawText(text,baseX,baseY,mPaint);
//BaseLine描画
mPaint.setColor(Color.RED);
canvas.drawLine(baseX,baseY,baseX+textWidth,baseY,mPaint);
mPaint.setTextSize(20);
canvas.drawText("base",baseX+textWidth,baseY,mPaint);
//Base描画
canvas.drawCircle(baseX,baseY,5,mPaint);
//TopLine描画
mPaint.setColor(Color.LTGRAY);
canvas.drawLine(baseX,topY,baseX+textWidth,topY,mPaint);
canvas.drawText("top",baseX+textWidth,topY,mPaint);
//AscentLine描画
mPaint.setColor(Color.GREEN);
canvas.drawLine(baseX,ascentY,baseX+textWidth,ascentY,mPaint);
canvas.drawText("ascent",baseX+textWidth,ascentY+10,mPaint);
//DescentLine描画
mPaint.setColor(Color.YELLOW);
canvas.drawLine(baseX,descentY,baseX+textWidth,descentY,mPaint);
canvas.drawText("descent",baseX+textWidth,descentY,mPaint);
//ButtomLine描画
mPaint.setColor(Color.MAGENTA);
canvas.drawLine(baseX,bottomY,baseX+textWidth,bottomY,mPaint);
canvas.drawText("buttom",baseX+textWidth,bottomY+10,mPaint);

相信通过以上程序,能够很好的理解topLine,buttomLine,baseLine,ascentLine,descentLine。另外:Paint类有两个方法

/**
*Returnthedistanceabove(negative)thebaseline(ascent)basedonthe
*currenttypefaceandtextsize.
*
*@returnthedistanceabove(negative)thebaseline(ascent)basedonthe
*currenttypefaceandtextsize.
*/
publicnativefloatascent();

/**
*Returnthedistancebelow(positive)thebaseline(descent)basedonthe
*currenttypefaceandtextsize.
*
*@returnthedistancebelow(positive)thebaseline(descent)basedon
*thecurrenttypefaceandtextsize.
*/
publicnativefloatdescent();

ascent():the distance above the baseline(baseline以上的height)descent():the distance below the baseline(baseline以下的height)

所以ascent() + descent() 可以看成文字的height。

到此为止,怎么获取文字的height和width都已经揭晓了:

获取height : mPaint.ascent() + mPaint.descent()

获取width : mPaint.measureText(text)

上述就是小编为大家分享的怎么在Android中使用FontMetrics对象计算坐标了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注恰卡编程网行业资讯频道。

发布于 2021-03-26 01:49:40
收藏
分享
海报
0 条评论
165
上一篇:如何在易语言中使用影像框组件 下一篇:viewpager怎么在android中使用
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码