这篇文章主要给大家介绍了关于机器人画布的drawText()与文字居中方案的相关资料,文中通过示例代码介绍的非常详细,对各位机器人开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
自定义视角是绘制文本有三类方法
//第一类
公共无效绘图文本(字符串文本、浮点x,浮点y、油漆油漆)
公共无效绘图文本(字符串文本int start,int end,float x,float y,Paint paint)
公共void drawText(字符序列文本,int start,int end,float x,float y,Paint paint)
public void drawText (char[] text,int index,int count,float x,float y,Paint paint)
//第二类
公共void drawPosText(字符串文本,浮动[]位置,油漆油漆)
public void draw postext(char[]text,int index,int count,float[] pos,Paint paint)
//第三类
公共void drawTextOnPath(字符串文本、路径路径、float hOffset、float vOffset、Paint paint)
public void drawTextOnPath(char[]text,int index,int count,Path path,float hOffset,float vOffset,Paint paint)
其中drawText()最常用,drawPosText()是根据一个个坐标点指定文字位置,drawTextOnPath()是根据路径绘制。但drawText()的x,y参数是干嘛的呢?
先来测试下
油漆油漆=新油漆();
paint.setStyle(画图100 .风格。填充);
画画。setstrokewidth(12);
画画。settextsize(100);
字符串文本='测试:我的文本;
canvas.drawText(text,200,400,paint);
//画两条线标记位置
画画。setstrokewidth(4);
paint.setColor(颜色。红色);
canvas.drawLine(0,400,2000,400,paint);
paint.setColor(颜色。蓝色);
canvas.drawLine(200,0,200,2000,paint);
左对齐-左边
可以看到,x,y并不是指定文字的中点位置,并且x,y与文字对齐方式有关(通过setTextAlign()指定,默认为左)
居中对齐-中心
右对齐-没错
(为了使文字完整,上面调整了下x,y的值)
从上面三种情况得出结论,x所对应的竖线:
左对齐— 文字的左边界
居中对齐— 文字的中心位置
右对齐— 文字的左边界
y对应的横线并不是文字的下边界,而是基准线基线
看下面这张图
红色的基线是基准线,紫色的顶端是文字的最顶部,也就是在drawText()中指定的x所对应,橙色的底部是文字的底部。
拿这些值如何获取呢?
画画字体规格字体规格=油漆。get font metrics();
fontMetrics.top
fontMetrics.ascent
fontMetrics.descent
字体度量。底部
记得要在设置完颜料的文字大小,宽度之类属性后再获取字体度量,
基线对应对应值为0,在它下面的下降和底部值为正,顶部和上升为负。那文字的高度为底部-顶部
所以,实际绘制的时候取决于基线上一个点来绘制文字,而这个点有三种分别对应为左、中、右
好啦,把drawText()中x,y参数讲清楚后实现文字居中就很容易了
直接上代码
//矩形背景
Paint bgRect=new Paint();
bgRect.setStyle(画图100 .风格。填充);
bgRect.setColor(Color .黄色);
RectF rectF=new RectF(200,200,800,600);
canvas.drawRect(rectF,bgRect);
Paint text Paint=new Paint();
textPaint.setStyle(Paint .风格。填充);
文字绘画。setstrokewidth(8);
文字绘画。settextsize(50);
文字绘画。设置对齐(绘制.居中对齐);
字符串文本='测试:我的文本;
//计算基线
画画字体度量字体度量=文本绘制。get font metrics();
浮动距离=(字体规格。底部字体度量。top)/2-字体规格。底部;
浮动基线=rectF.centerY()距离;
canvas.drawText(text,rectF.centerX(),baseline,text paint);
效果
将对齐方式设置为居中,那要让文字居中显示,x值就为矩形中心x值,y值也就是基线的计算看下图
y=矩形中心y值矩形中心与基线的距离
距离=文字高度的一半-基线到文字底部的距离(也就是底部)
=(字体规格。底部字体度量。top)/2-字体规格。底部
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。