现在的位置: 首页 > 综合 > 正文

canvas 曲线 弧线

2017年10月30日 ⁄ 综合 ⁄ 共 2079字 ⁄ 字号 评论关闭
文章目录

canvas 画曲线 弧线说明

创建弧线

arc() 方法创建弧/曲线(用于创建圆或部分圆)。
           
语法:context.arc(x,y,r,sAngle,eAngle,counterclockwise);
参数:x,y 园的中心的坐标,r 园的半径
           sAngle 起始角 弧度记,eAngle 结束角,
           counterclockwise 规定是顺时针还是逆时针画图,false 顺时针,true 逆时针

  图形说明:

           

var mycanvas = document.getElementById("mycanvas");
            if (mycanvas == null) {
                return false;
            }
            var context = mycanvas.getContext("2d");
            context.beginPath();
            context.arc(150, 150, 120, 0, 1.5 * Math.PI, false);//顺时针
            context.stroke();
            context.closePath();

            context.beginPath();
            context.arc(300, 150, 120, 2 * Math.PI, 0 * Math.PI, true);//逆时针
            context.stroke();
            context.closePath();

创建曲线

arcTo 创建两切线之间的弧/曲线
           
语法:context.arcTo(x1,y1,x2,y2,r);
 参数:x1,y1曲线的第一个控制点,x2,y2 曲线的第二个控制点,曲线的半径
 说明:arcTo其实是通过起点,第1点,第2点的两条直线,组成了一个夹角,而这两条线,也是参数圆的切线。
              其中圆的半径决定了圆会在什么位置与线条发生切边。就像一个球往一个死角里面滚,球越小就滚得越进去,越靠近死角;球大则反之。

 var mycanvas = document.getElementById("mycanvas");
            if (mycanvas == null) {
                return false;
            }
            var context = mycanvas.getContext("2d");
            context.beginPath();
            context.strokeStyle = "blue";
            context.lineWidth = 5;
            context.moveTo(220, 300);
            context.arcTo(400, 300, 330, 430, 60);
            context.stroke();
            context.closePath();

            context.beginPath();
            context.strokeStyle = "green";
            context.lineWidth = 3;
            context.moveTo(220, 300);
            context.lineTo(400, 300);
            context.lineTo(330, 430);
            context.fillText("x1,y1", 410, 300);
            context.fillText("x2,y2", 330, 440);
            context.stroke();
            context.closePath();

裁剪图形

clip() 方法从原始画布中剪切任意形状和尺寸。
语法:context.clip();
说明:一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)。
您也可以在使用 clip() 方法前通过使用 save() 方法对当前画布区域进行保存,
并在以后的任意时间对其进行恢复(通过 restore() 方法)。

 var mycanvas = document.getElementById("mycanvas");
            if (mycanvas == null) {
                return false;
            }
            var context = mycanvas.getContext("2d");
            context.beginPath();
            context.strokeStyle = "blue";
            context.rect(460, 10, 200, 200);
            context.stroke();
            context.clip();
            context.closePath();

            context.fillStyle = "green";
            context.fillRect(400, 10, 300, 100);

判断一个点是否在某条线上

isPointInPath 判断一个点是否在某个线路上,
语法:context.isPointInPath(x,y)
参数:x,y测试点的x,y坐标

 var mycanvas = document.getElementById("mycanvas");
            if (mycanvas == null) {
                return false;
            }
            var context = mycanvas.getContext("2d");
            context.rect(10, 300, 120, 120);
            if (context.isPointInPath(10, 320)) {
                context.stroke();
            }

运行效果如下图:


抱歉!评论已关闭.