zoukankan      html  css  js  c++  java
  • canvas详解---绘制弧线

    Draw an arc

    context.arc(centerx,centery,radius,startingAngle,endingAngle,anticlockwise=false);

    参数一是圆心的x坐标值,参数二是圆心y轴坐标值,参数三是半径,参数四是起始弧度,参数五十终止弧度,最后一个参数表示的绘制方向,默认的是false表示的是顺时针的方向。如果是true表示的是逆时针方向。

    注意了弧度制都是固定好了。如上图所示

    请看下面的一段程序

    <!DOCTYPE html>
    <html>
    <head>
    <title>canvas详解</title>
    </head>
    <body>
    <canvas id="canvas" width="1024" height="768" style="border:1px solid #aaa;display:block;margin:50 auto;"></canvas>
    <script>
    var canvas=document.getElementById("canvas");
    var context=canvas.getContext("2d");
    context.lineWidth=5;
    context.strokeStyle="red";
    context.arc(100,100,50,0,1.5*Math.PI);
    context.stroke();

    </script>
    </body>
    </html>

    结果显示:

    如果在context.arc(100,100,50,0,1.5*Math.PI,true);表示的是逆时针从0度到1.5PI处,结果如下图

    所以从上面的例子可以看出,弧度值是固定的,不是说顺时针画时就以顺时针的方向来看,逆时针画时就以逆时针的方向来看。这一点千万要注意。

    再来看一个程序

    var canvas=document.getElementById("canvas");
    var context=canvas.getContext("2d");
    context.lineWidth=5;
    context.strokeStyle="red";
    for(var i=0;i<10;i++)
    {
    context.beginPath();
    context.arc(50+i*100,60,40,0,2*Math.PI*(i+1)/10);
    context.closePath();
    context.stroke();
    }

    结果显示如下:

    这时候大家会感到奇怪了,为什么画出来的是一个封闭的图形呢?

    其实这是closePath另外一个作用了,当前我们绘制的路径不是封闭的路径时,closePath()会将自动路径封闭。

    如果这样的话

    for(var i=0;i<10;i++)
    {
    context.beginPath();
    context.arc(50+i*100,60,40,0,2*Math.PI*(i+1)/10);
    context.stroke();
    }

    生成的就是一段段的弧,不会是封闭的了。

    而且我们使用了beginPath(),canvas会知道我们是重新画一条,如果给这几条设置不同的属性也是可以的。

    接下来在看一个问题

    var canvas=document.getElementById("canvas");
    var context=canvas.getContext("2d");
    context.lineWidth=5;
    context.fillStyle="red";
    for(var i=0;i<10;i++)
    {
    context.beginPath();
    context.arc(50+i*100,60,40,0,2*Math.PI*(i+1)/10);
    context.closePath();
    context.fill();
    }

    如果是这样的话,结果会是填充的几个弧形

    ,如果我们去掉了closePath(),结果也会是一样的。

    为什么呢?

    因为如果调用了fill()的话,canvas会自动的找寻首尾然后将其连接起来,然后在填充。

    canvas还有很对绘制接口,我将在下一张具体讲解canvas的其他知识。

  • 相关阅读:
    weblogic 的应用 常见问题处理 db2 链接不上(转载)
    WebLogic简单的备份和恢复
    linux 切换用户之后变成-bash-x.x$的解决方法
    weblogic迁移随手记
    生产环境下Centos 6.5优化配置 (装载)
    查看db2表空间使用率
    Linux 之 rsyslog 系统日志转发(转载)
    windows下定时利用bat脚本实现ftp上传和下载
    rsyslog同步history日志(转载)
    linux比较指令comm、diff、grep -Ff
  • 原文地址:https://www.cnblogs.com/yuaima/p/5045702.html
Copyright © 2011-2022 走看看