Android中的canvas.drawText方法
2014-12-11 22:57
381 查看
今天在使用Android中的Canvas类提供的drawText()方法时,出现了一点疑问,我需要在一个格子里面把字符串画出来,希望字符串能在格子的正中间,格子的cellWidth和cellHeight都知道了,通过计算也得到需要绘制的文本的textWidth和textHeight了,drawText方法的参数中分别指定了文本的起始x和y坐标,但是我在绘制文本的时候发现,文字偏离中间靠上了,检查之后才发现,原来drawText方法指定的起始坐标,指的是文本的左下角的坐标,我用一幅图来解释一下,看下面的图:
android手机的坐标系一般是以左上角为原点,向右是X轴正方向,向下是Y轴正方向,所以我在drawText方法中,就以为传入的初始坐标应该是文本对应的矩形区域的左上角坐标,由于这个错误,导致实际绘制的文本稍微偏上了,其实drawText方法中传入的起始坐标是文本对应矩形的左下角坐标,我用下面的代码证明了这个结论:
可以看到文本在直线的上方,则证明了drawText方法中传入的坐标,是指的文本所在矩形的左下角。
android手机的坐标系一般是以左上角为原点,向右是X轴正方向,向下是Y轴正方向,所以我在drawText方法中,就以为传入的初始坐标应该是文本对应的矩形区域的左上角坐标,由于这个错误,导致实际绘制的文本稍微偏上了,其实drawText方法中传入的起始坐标是文本对应矩形的左下角坐标,我用下面的代码证明了这个结论:
package com.example.testdrawtext; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; public class TestView extends View { private Paint textPaint = new Paint(); private Paint linePaint = new Paint(); public TestView(Context context) { super(context); textPaint.setTextSize(50); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawText("hello", 0, 100, textPaint); canvas.drawLine(0, 100, 480, 100, linePaint); } }上面的Android代码是一个自定义的View,通过继承View并重写onDraw方法,在onDraw方法中,我绘制了一条直线和一段文本,直线绘制在Y轴正方向100的位置,绘制文本时drawText方法中传入的参数为0,100,即指定绘制文本的初始坐标为(0,100),然后在Activity中显示这个MyView,代码很简单,直接在Activity中setContentView(new MyView(this))就行了,运行后效果为:
可以看到文本在直线的上方,则证明了drawText方法中传入的坐标,是指的文本所在矩形的左下角。
相关文章推荐
- 关于Android Canvas.drawText方法中的坐标参数的正确解释
- 关于Android Canvas.drawText方法中的坐标参数的正确解释
- Android Canvas.drawText方法中的坐标参数的正确解释
- 关于Android Canvas.drawText方法中的坐标参数的正确解释
- 关于Android Canvas.drawText方法中的坐标参数的正确解释
- Android Canvas.drawText方法中的坐标参数的正确解释
- 关于Android Canvas.drawText方法中的坐标参数的正确解释
- 关于Android Canvas.drawText方法中的坐标参数的正确解释
- Android Canvas drawText实现中文垂直居中
- Android Canvas drawText实现中文垂直居中
- android canvas drawText \r\n 换行
- Android Canvas drawText实现中文垂直居中
- android canvas.drawText()的研究
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决)
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决
- Android Canvas drawText()文字居中
- Android Canvas drawText实现中文垂直居中
- Android Canvas drawText实现中文垂直居中
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决)
- android canvas.drawBitmap 方法的区别