androd之绘制文本(FontMetrics)

Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标。
它的思路和java.awt.FontMetrics的基本相同。

FontMetrics对象
它以四个基本坐标为基准,分别为:
・FontMetrics.top
・FontMetrics.ascent
・FontMetrics.descent
・FontMetrics.bottom

Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);  
textPaint.setTextSize( 35);  
textPaint.setColor( Color.WHITE);  
  
// FontMetrics对象  
FontMetrics fontMetrics = textPaint.getFontMetrics();  
  
String text = "abcdefghijklmnopqrstu";  
  
// 计算每一个坐标  
float baseX = 0;  
float baseY = 100;  
float topY = baseY + fontMetrics.top;  
float ascentY = baseY + fontMetrics.ascent;  
float descentY = baseY + fontMetrics.descent;  
float bottomY = baseY + fontMetrics.bottom;  
  
// 绘制文本  
canvas.drawText( text, baseX, baseY, textPaint);  
  
// BaseLine描画  
Paint baseLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);>  
baseLinePaint.setColor( Color.RED);  
canvas.drawLine(0, baseY, getWidth(), baseY, baseLinePaint);  
  
// Base描画  
canvas.drawCircle( baseX, baseY, 5, baseLinePaint);  
  
// TopLine描画  
Paint topLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);  
topLinePaint.setColor( Color.LTGRAY);  
canvas.drawLine(0, topY, getWidth(), topY, topLinePaint);  
  
// AscentLine描画  
Paint ascentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);  
ascentLinePaint.setColor( Color.GREEN);  
canvas.drawLine(0, ascentY, getWidth(), ascentY, ascentLinePaint);  
  
// DescentLine描画  
Paint descentLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);  
descentLinePaint.setColor( Color.YELLOW);  
canvas.drawLine(0, descentY, getWidth(), descentY, descentLinePaint);  
  
// ButtomLine描画  
Paint bottomLinePaint = new Paint( Paint.ANTI_ALIAS_FLAG);  
bottomLinePaint.setColor( Color.MAGENTA);  
canvas.drawLine(0, bottomY, getWidth(), bottomY, bottomLinePaint);  

你可能感兴趣的:(font)