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

  介绍

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

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

public  static  class  FontMetrics  {   ,/* *   ,,*,从而maximum  distance  above 从而baseline  for 从而tallest  glyph 拷贝;   ,,*,从而font  at  a  given  text 大小。   ,,*/public 才能;float ,最高;   ,/* *   ,,*,从而recommended  distance  above 从而baseline  for  singled  spaced 文本。   ,,*/public 才能;float ,上升;   ,/* *   ,,*,从而recommended  distance  below 从而baseline  for  singled  spaced 文本。   ,,*/public 才能;float ,血统;   ,/* *   ,,*,从而maximum  distance  below 从而baseline  for 从而lowest  glyph 拷贝;   ,,*,从而font  at  a  given  text 大小。   ,,*/public 才能;float ,底部;   ,/* *   ,,*,从而recommended  additional  space 用add 结构;lines  of 文本。   ,,*/public 才能;float ,领先;   }

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

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

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

/* *,绘制FontMetrics对象的各种线,*/mPaint.reset ();   mPaint.setColor (Color.WHITE);   mPaint.setTextSize (80);//,FontMetrics对象   FontMetrics  FontMetrics =, mPaint.getFontMetrics ();   String  text =,“abcdefg";//,计算每一个坐标   float  textWidth =, mPaint.measureText(文本);   float  baseX =, 30;   float  baseY =, 700;   float  topY =, baseY  +, fontMetrics.top;   float  ascentY =, baseY  +, fontMetrics.ascent;   float  descentY =, baseY  +, fontMetrics.descent;   float  bottomY =, baseY  +, fontMetrics.bottom;//,绘制文本   baseX canvas.drawText(文本、,,,baseY,, mPaint);//,基线描画   mPaint.setColor (Color.RED);   canvas.drawLine (baseX, baseY, baseX  +, textWidth,, baseY,, mPaint);   mPaint.setTextSize (20);   canvas.drawText (“base", baseX  +, textWidth,, baseY,, mPaint);//,基地描画   canvas.drawCircle (baseX, baseY,, 5日,mPaint);//,背线描画   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);

相信通过以上程序,能够很好的理解背线,buttomLine,基线,ascentLine, descentLine。
另外:油漆类有两个方法

/* *   ,* Return 从而distance  above (负面),从而baseline (提升),based 提醒   ,* current  typeface 以及text 大小。   ,*   ,* @return 从而distance  above (负面),从而baseline (提升),based 提醒   ,*,,,,current  typeface 以及text 大小。   ,*/public  native  float 提升();   ,/* *   ,* Return 从而distance  below (积极的),从而baseline (血统),based 提醒   ,* current  typeface 以及text 大小。   ,*   ,* @return 从而distance  below (积极的),从而baseline (血统),based    ,*,,,,,current  typeface 以及text 大小。   ,*/null

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