WEB开发网
开发学院手机开发Android 开发 Androd 绘制文本(FontMetrics) 阅读

Androd 绘制文本(FontMetrics)

 2010-08-23 11:18:00 来源:WEB开发网   
核心提示:Canvas 作为绘制文本时,使用FontMetrics对象,Androd 绘制文本(FontMetrics),计算位置的坐标,它的思路和java.awt.FontMetrics的基本相同

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

它的思路和java.awt.FontMetrics的基本相同。

FontMetrics对象

它以四个基本坐标为基准,分别为:

・FontMetrics.top

・FontMetrics.ascent

・FontMetrics.descent

・FontMetrics.bottom

该图片将如下

Java代码

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);

Tags:Androd 绘制 文本

编辑录入:coldstar [复制链接] [打 印]
赞助商链接