Android:绘制字符

 根据FontMetrics的特点,将字符在矩形框中居中显示:

ascent,top是负值,descent,bottom是正值

黄色矩形代表要绘制的字符,图中的黄线代表baseline。

以下为转载:

canvas.drawText("www.cnblogs.com", x, y, paint);  x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标,但是安卓的处理有点另类,我都怀疑安卓的设计者是不是 脑壳有问题了。
x默认是‘www.cnblogs.com’这个字符串的左边在屏幕的位置,如果设置了paint.setTextAlign(Paint.Align.CENTER);那就是字符的中心,y是指定这个字符baseline在屏幕上的位置。

怎样将字符(黄色区域)在矩形框(图中蓝色矩形)中居中显示呢?

 1 Paint numPaint = new Paint();
 2 numPaint.setColor(Color.BLACK);
 3 numPaint.setStyle(Paint.Style.STROKE);
 4 numPaint.setTextSize(height*0.75f);
 5 numPaint.setTextAlign(Paint.Align.CENTER);
 6         
 7 FontMetrics fM = numPaint.getFontMetrics();
 8 float x = width / 2;//蓝色矩形区域 横向的中心
 9 float y = height / 2 - (fM.descent + fM.ascent)/2;//baseline偏移 蓝色矩形区域纵向中心 的距离, 目的是为了使 字符区域在蓝色矩形区域居中
10         
11 canvas.drawText("www.cnblogs.com",  x,  y, numPaint);

 

posted @ 2014-04-12 16:19  soul390  阅读(484)  评论(0编辑  收藏  举报