android精确绘制文字位置的方法
来源:互联网 发布:守望先锋生涯数据出错 编辑:程序博客网 时间:2024/06/06 04:10
android 中使用Canvas的drawText绘制文本的位置,是基于基线的。
例如以下图:
当中字母Q的小尾巴在横线以下了。
怎么样找准字母的中心位置呢?
先看以下的样例:(右边的数字,表示字体的 left, top, right, bottom)
这里面的关键是Paint.getTextBound。 getTextBound会填充一个Rect,这个Rect表示的就是一个字的left, top, right, bottom。
注意到left和top并非从0,0開始的。 left和right应该是从0坐标開始的。而top和bottom相对于基线而言的。这个信息足够我们找准文字的中心了。
最后上一下代码:
@Overridepublic void onDraw(Canvas canvas) {mPaint.setTextSize(40f);mPaint.setAntiAlias(true);mPaint.setColor(0xffff0000);canvas.drawText(alphas, 30, 60, mPaint);mPaint.setColor(0xff000000);canvas.drawLine(0, 60, 1000, 60, mPaint);for(int i = 0; i < alphas.length(); i ++) {int y = i*70+100;mPaint.getTextBounds(alphas, i, i+1, mBound);mPaint.setColor(0xff000000);canvas.drawText(String.format("%d,%d,%d,%d", mBound.left,mBound.top, mBound.right,mBound.bottom), 150, y, mPaint);mPaint.setColor(0xffff0000);canvas.drawCircle(60, y, 30, mPaint);mPaint.setColor(0xffffffff);canvas.drawText(alphas, i, i+1, 60 - (mBound.right + mBound.left)/2, y - (mBound.bottom + mBound.top)/2, mPaint);mPaint.setColor(0xff000000);canvas.drawLine(30, y, 90, y, mPaint);canvas.drawLine(60, y-30, 60, y+30, mPaint);}}}
博文出处:http://www.cnblogs.com/brucemengbm/p/6734946.html
阅读全文
0 0
- android精确绘制文字位置的方法
- android精确绘制文字位置的方法
- 自定义view-精确控制文字绘制位置
- [原创]JNI绘制文字的方法
- Android 自定义控件文字的居中绘制
- Android-精确记录恢复ListView的item位置
- android RadioButton 文字与图标的位置
- Android 文字居中绘制
- Android绘制文字
- android绘制文字
- Canvas---文字的绘制
- 文字的绘制
- 自定义View(三)的常用方法(测量、绘制、位置)
- android ListView 精确记录滑动位置
- Android 沿着线绘制文字
- Android 沿曲线绘制文字
- Android文字测量与绘制的两个注意点
- Android自定义View之绘制闪动的文字
- Invalid nested tag br found, expected closing tag li 错误解决
- thinkphp5.0学习(二):tp5.0架构和运转流程
- 欢迎使用CSDN-markdown编辑器
- 12.leetCode690. Employee Importance
- Discuz!X json输出解析后模板
- android精确绘制文字位置的方法
- C#中属性和字段的区别
- Linux创建用户并加入sudoers文件
- 实现HttpClient重试
- 原生js实现的鼠标滑上去之后按照屏幕高度放大缩略图
- Window 透明窗体的实现总结
- OpenCV-将JPG图像的第二个通道和第三个通道的值设置为最大值
- 多线程创建的四种方式
- oracle 存储过程 ,触发器练习