ascent,top是负值,descent,bottom是正值
黄色矩形代表要绘制的字符,图中的黄线代表baseline。
canvas.drawText("www.cnblogs.com", x, y, paint);
x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标,但是安卓的处理有点另类,我都怀疑安卓的设计者是不是
脑壳有问题了。
x默认是‘www.jcodecraeer.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; 10 11 canvas.drawText("www.cnblogs.com", x, y, numPaint);