canvas教程

Android canvas.drawArc() 画圆弧

字号+ 作者:H5之家 来源:H5之家 2017-10-13 08:36 我要评论( )

Android 画圆弧 drawArc()

Android canvas.drawArc() 画圆弧

原创 2016年07月02日 16:37:25

  • 编辑
  • 删除
  • (@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter, @NonNull Paint paint) { drawArc(oval.left, oval.top, oval.right, oval.bottom, startAngle, sweepAngle, useCenter, paint); }

    要实现这个方法,我们要传5个参数进去。

    第一个参数:RectF oval

    oval 参数的作用是:定义的圆弧的形状和大小的范围

    /** * 这是一个居中的圆 */ float x = (getWidth() - getHeight() / 2) / 2; float y = getHeight() / 4; RectF oval = new RectF( x, y, getWidth() - x, getHeight() - y);

    oval 参数的作用是:定义的圆弧的形状和大小的范围

    第二个参数:float startAngle

    这个参数的作用是设置圆弧是从哪个角度来顺时针绘画的

    canvas.drawArc(oval,-90,120,false,mPaint);

    -90

    canvas.drawArc(oval,90,110,false,mPaint);

    90

    //设置为-180的时候也是这样 canvas.drawArc(oval,180,140,false,mPaint);

    180

    //设置为360的时候也是这样 canvas.drawArc(oval,0,140,false,mPaint);

    140

    第三个参数:float sweepAngle

    这个参数的作用是设置圆弧扫过的角度

    我们从上面的代码就可以知道其中的作用了 第四个参数:boolean useCenter

    这个参数的作用是设置我们的圆弧在绘画的时候,是否经过圆形
    值得注意的是,这个参数在我们的 mPaint.setStyle(Paint.Style.STROKE); 设置为描边属性的时候,是看不出效果的。

    /** *这里我是偷懒了,建议不要在onDraw()方法里初始化对象 */ Paint p = new Paint();//这个是画矩形的画笔,方便大家理解这个圆弧 p.setStyle(Paint.Style.STROKE); p.setColor(Color.RED); mPaint.setAntiAlias(true);//取消锯齿 mPaint.setStyle(Paint.Style.FILL);//设置画圆弧的画笔的属性为描边(空心),个人喜欢叫它描边,叫空心有点会引起歧义 mPaint.setStrokeWidth(mCircleWidth); mPaint.setColor(Color.CYAN); /** * 这是一个居中的圆 */ float x = (getWidth() - getHeight() / 2) / 2; float y = getHeight() / 4; RectF oval = new RectF( x, y, getWidth() - x, getHeight() - y); canvas.drawArc(oval,360,140,false,mPaint);//画圆弧,这个时候,绘制没有经过圆心 canvas.drawRect(oval, p);//画矩形

    false

    //当我们设置为true的时候,绘制的时候就经过圆心了 canvas.drawArc(oval,360,140,true,mPaint);

    true

    第五个参数:Paint paint

    这个参数的作用是设置我们的画笔对象的属性

    mPaint.setAntiAlias(true);//取消锯齿 mPaint.setStyle(Paint.Style.FILL);//设置画圆弧的画笔的属性为描边(空心),个人喜欢叫它描边,叫空心有点会引起歧义 mPaint.setStrokeWidth(mCircleWidth); mPaint.setColor(Color.CYAN);

    这里还是要强调一下,当 p.setStyle(Paint.Style.STROKE)的时候,我们的第四个参数boolean useCenter,是看不到效果的。

    下面是代码全文

    { private Paint mPaint; /** * 圆的宽度 */ private int mCircleWidth = 3; public CustomProgress(Context context) { this(context, null); } public CustomProgress(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CustomProgress(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mPaint = new Paint(); } (Canvas canvas) { mPaint.setAntiAlias(true);//取消锯齿 mPaint.setStyle(Paint.Style.FILL); mPaint.setStrokeWidth(mCircleWidth); mPaint.setColor(Color.CYAN); /** * 这是一个居中的圆 */ float x = (getWidth() - getHeight() / 2) / 2; float y = getHeight() / 4; RectF oval = new RectF( x, y, getWidth() - x, getHeight() - y); canvas.drawArc(oval,360,140,true,mPaint); } } 那么,有关于如何画圆弧的笔记就到这里了,莎哟娜啦

    阅读全文

    版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

  • 标签:
  • android /
  • 本文已收录于以下专栏:
  • 相关文章推荐

    自定义控件:圆形进度条的实现

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • android 里面Canvas绘制文本的方法

      android 里面Canvas绘制文本的方法

      2017-10-10 12:06

    • Android 侧滑关闭Activity的实例

      Android 侧滑关闭Activity的实例

      2017-10-10 12:03

    • Android studio 继承view 画笔画圆、画方形、画三角形、画扇形、画椭圆

      Android studio 继承view 画笔画圆、画方形、画三角形、画扇形、画椭

      2017-10-08 08:02

    • android课程:canvas画图 切割画布(clipRect)

      android课程:canvas画图 切割画布(clipRect)

      2017-10-07 09:00

    网友点评