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小时内删除。
留言与评论(共有 0 条评论) |