在Android中,要实现底部对齐文本的效果,可以使用Canvas的drawText方法,并结合Paint的相关属性进行设置。 首先,创建一个Paint对象,并设置其对齐方式为底部对齐: ```j...
*/publicvoiddrawText(@NonNull String text,float x,float y,@NonNull Paint paint) 这里要说明的是,这里的drawText中x跟y坐标系都是相对于自定义控件本身矩形框,这边我们主要要关注的就是第三个参数,就是我们今天要讨论的水平基线,从官方解释看,就是在绘制文字时候的沿y轴的基线,在看看第二个参数,官方给出...
@Overridepublic voiddraw(Canvas canvas) {super.draw(canvas);// 将坐标原点移到控件中心canvas.translate(getWidth() /2,getHeight() /2);// x轴canvas.drawLine(-getWidth() /2,0,getWidth() /2,0, paint);// y轴canvas.drawLine(0,-getHeight() /2,0,getHeight() /2, paint);// 绘制文...
canvas.drawRect(rect, rectPaint); Paint textPaint=newPaint(); textPaint.setColor(Color.WHITE); textPaint.setTextSize(50); textPaint.setStyle(Paint.Style.FILL);//该方法即为设置基线上那个点究竟是left,center,还是right 这里我设置为centertextPaint.setTextAlign(Paint.Align.CENTER); Paint.FontMetrics...
Android的Canvas绘图,drawText里的origin是以baseline为基准的,直接以目标矩形的bottom传进drawText,字符位置会偏下。这样写代码: @Override publicvoid onDraw (Canvas canvas) { Rect targetRect =new Rect(50,50,1000,200); Paint paint =new Paint(Paint.ANTI_ALIAS_FLAG); ...
之所以drawText()方法中x,y指的是基线中间的那个点,是因为setTextAlign(Paint.Align.Center) 那么要想在正中间显示文字,x只要为矩形的中点x坐标即可 x = rect.centerX() 要计算的就是基线中间图上红色点的y坐标了,看图可以发现红色点的y为矩形中点黑色点的y坐标+图中黑色点和红色点之间的距离 ...
好啦,把drawText()中x,y参数讲清楚后实现文字居中就很容易了。 直接上代码: @OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);//矩形背景PaintbgRect=newPaint();bgRect.setStyle(Paint.Style.FILL);bgRect.setColor(Color.YELLOW);RectFrectF=newRectF(200,200,800,600);canvas.drawRect(re...
Android的Canvas绘图,drawText里的origin是以baseline为基准的,直接以目标矩形的bottom传进drawText,字符位置会偏下。这样写代码: [java]view plain copy print? @Override public void onDraw (Canvas canvas) { Rect targetRect = new Rect(50, 50, 1000, 200); ...
使用Canvas 的 drawText 方法绘制文字 , 传入 ( x , y ) 坐标 , x 是绘制区域的左侧 , y 是文本基线 , 绘制的位置如下 : 如果不是要求很精确的话 , 一定程度上可以理解为 传入的值 左下角的位置 ; 如果要精准到像素级别 , 保证1个像素都不差 , 就要考虑到 绘图区域 中 文本区域 的范围 ; ...
本来这篇文章是要写写我在设计高级跑马灯程序的心得的,但是编写过程中花了近一天多的时间搞明白canvas.drawText中的第三个参数[float y]代表的真实含义。学习本文应该能帮助大家掌握FontMetrics类和Rect类成员变量值具体含义。 drawText引出问题 先来看看api中是如何定义drawText的参数。