drawon

更新时间:2022-12-31 03:29:27 阅读: 评论:0


2022年12月31日发(作者:女神节快乐英文怎么说)

onDraw()中画⽂字、画圆弧、画圆代码总结

1.说明

在这⾥把我们前边写的⼀些东西总结下,我们前边画了⽂字、圆弧、圆,那么这节课我就把这⼏块内容总结下,以后如果我们再次遇到同样的东

西,就可以直接复制过去⽤就⾏。

()绘制onDraw()绘制

2.1>dradrawText()——画⽂字

drawText(mText,x,baLine,mPaint);

参数1:画的⽂字;

参数2:是起点;

intx=getPaddingLeft();

参数3:基线baLine

//dy:是⽂字⾼度的⼀半到基线baLine的位置

//top:是baLine到⽂字顶部的距离,是⼀个负值

//bottom:是baLine到⽂字底部的距离,是⼀个正值

tricsIntfontMetrics=tMetricsInt();

intdy=()/;

intbaLine=getHeight()/2+dy;

参数4:画笔

代码如下:

/**

*绘制⽂字

*@paramcanvas

*/

@Override

protectedvoidonDraw(Canvascanvas){

(canvas);

//第⼀种:带有getTextBounds的,⽽且所有⾃定义View绘制⽂字都是采⽤这种⽅式的

//画⽂字

StringstepText=mCurrentStep+"";

Rectrect=newRect();

tBounds(stepText,0,(),rect);

intdx=getWidth()/()/2;

//基线baLine

tricsIntfontMetrics=tMetricsInt();

intdy=()/;

intbaLine=getHeight()/2+dy;

xt(stepText,dx,baLine,mTextPaint);

-----------------------------------------------------------------------------------------------------------

//第⼆种:这种⽅式是不带getTextBounds()的,在⾃定义View中绘制⽂字应该不太常⽤的

//中⼼点:getHeight()/2

//参数1:⽂字参数2:x参数3:y参数4:画笔

//x:是⽂字开始的距离

//y:是基线baLine是要求的?getHeight()/2是中⼼位置已知

//dy:是⾼度的⼀半到基线baLine的位置

//top:是baLine到⽂字顶部的距离,是⼀个负值

//bottom:是baLine到⽂字底部的距离,是⼀个正值

tricsIntfontMetrics=tMetricsInt();

intdy=()/;

intbaLine=getHeight()/2+dy;

intx=getPaddingLeft();

xt(mText,x,baLine,mPaint);

}

2.2>dradrawArc()——画圆弧

@Override

protectedvoidonDraw(Canvascanvas){

(canvas);

//画外圆弧

RectFrectF=newRectF(mBorderWidth/2,mBorderWidth/2

,getWidth()-mBorderWidth/2,getHeight()-mBorderWidth/2);

c(rectF,135,270,fal,mOuterPaint);

if(mStepMax==0)return;

//画内圆弧肯定不能写死,使⽤百分⽐,让使⽤者从外边传递

floatsweepAngle=(float)mCurrentStep/mStepMax;

c(rectF,135,sweepAngle*270,fal,mInnerPaint);

}

2.3>画圆、画正⽅形、画三⾓

@Override

protectedvoidonDraw(Canvascanvas){

//(canvas);

switch(mCurrentShape){

caCircle:

//画圆

intcenter=getWidth()/2;

or();

rcle(center,center,center,mPaint);

break;

caSquare:

//画正⽅形

or();

ct(0,0,getWidth(),getHeight(),mPaint);

break;

caTriangle:

//画等边三⾓形Path画路线

or();

if(mPath==null){

//画路径

mPath=newPath();

(getWidth()/2,0);

(0,(float)((getWidth()/2)*(3)));

(getWidth(),(float)((getWidth()/2)*(3)));

//(getWidth()/2,0);

();//把路径闭合,或者⽤上边lineTo即可

}

th(mPath,mPaint);

break;

}

}

注意:

复写onDraw()⽅法后,必须把()⽅法注释,我们不⽤⽗类来帮我们画,我们⾃⼰在onDraw()⽅法中写代码去绘制。

本文发布于:2022-12-31 03:29:27,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/63483.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:memorystick
下一篇:留言簿
标签:drawon
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图