首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Android Canvas之Path操作(6)

Android Canvas之Path操作(6)

绘制圆弧:

    //绘制圆弧
    addArc(RectF oval, float startAngle, float sweepAngle)
    addArc(float left, float top, float right, float bottom, float startAngle,float sweepAngle)
     
    //forceMoveTo:是否强制将path最后一个点移动到圆弧起点,
    //true是强制移动,即为不连接两个点;false则连接两个点
    arcTo(RectF oval, float startAngle, float sweepAngle,boolean forceMoveTo)
    arcTo(RectF oval, float startAngle, float sweepAngle)
    arcTo(float left, float top, float right, float bottom, float startAngle,float sweepAngle, boolean forceMoveTo)

addArc和arcTo都是添加圆弧到path中,不过他们之间还是有区别的:addArc是直接添加圆弧到path中,而arcTo会判断要绘制圆弧的起点与绘制圆弧之前path中最后的点是否是同一个点,如果不是同一个点的话,就会连接两个点。
示例:

    //在(400, 200, 600, 400)区域内绘制一个300度的圆弧
    RectF rectF = new RectF(400, 200, 600, 400);
    path.addArc(rectF, 0, 300);
    //在(400, 600, 600, 800)区域内绘制一个90度的圆弧,并且不连接两个点
    RectF rectFTo = new RectF(400, 600, 600, 800);
    path.arcTo(rectFTo, 0, 90, true);
    //等价于path.addArc(rectFTo, 0, 90);
    canvas.drawPath(path, paint);

效果图:

修改一下代码:

    //在(400, 200, 600, 400)区域内绘制一个300度的圆弧
    RectF rectF = new RectF(400, 200, 600, 400);
    path.addArc(rectF, 0, 300);
    //在(400, 600, 600, 800)区域内绘制一个90度的圆弧,并且连接两个点
    RectF rectFTo = new RectF(400, 600, 600, 800);
    path.arcTo(rectFTo, 0, 90,false);
    //等价于path.arcTo(rectFTo, 0, 90);
    canvas.drawPath(path, paint);

对比发现我们只是将arcTo最后一个参数变成了false,即连接绘制圆弧之前path的最后一个点和绘制圆弧的起点,效果图:
返回列表