,,Android Canvas的drawText()与文字居中方案详解

,,Android Canvas的drawText()与文字居中方案详解

这篇文章主要给大家介绍了关于机器人画布的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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: