cvmachine.com - 申博开户网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:canvas仿写贝塞尔曲线示例代码分析

canvas仿写贝塞尔曲线示例代码分析

2018-01-06 11:42:33 来源:www.cvmachine.com 【

canvas仿写贝塞尔曲线示例代码分析

天正在等烟雨,而我在等你,啦啦啦,欢迎关注我的简书,今天分享的是原创的canvas仿写贝塞尔曲线方法。具体如下:

效果图:

canvas仿写贝塞尔曲线示例代码分析

html

<canvas id="mycanvas" width="500" height="500">您的浏览器不支持canvas</canvas>

css

canvas{ border: 1px solid black;}

js

var canvas = document.getElementById("mycanvas");
    var context = canvas.getContext("2d");
    var x1 = 100;
    var y1 = 100;
    var x2 = 400;
    var y2 = 400;
    draw();
    function draw(){
      //画半透明的线
      context.beginPath();
      context.moveTo(500,0);
      context.lineTo(0,500);
      context.strokeStyle = "rgba(0,0,0,0.3)";
      context.lineWidth = 10;
      context.stroke();
      //画连接线
      context.beginPath();
      context.moveTo(0,500);
      context.lineTo(x1,y1);
      context.lineWidth = 2;
      context.strokeStyle = "black";
      context.stroke();
      context.beginPath();
      context.moveTo(500,0);
      context.lineTo(x2,y2);
      context.lineWidth = 2;
      context.strokeStyle = "black";
      context.stroke();
      //画红球
      context.beginPath();
      context.arc(x1,y1,10,0,Math.PI*2);
      context.fillStyle = "orange";
      context.fill();
      //画蓝球
      context.beginPath();
      context.arc(x2,y2,10,0,Math.PI*2);
      context.fillStyle = "blue";
      context.fill();
      //画贝塞尔曲线
      context.beginPath();
      context.moveTo(0,500);
      context.bezierCurveTo(x1,y1,x2,y2,500,0);
      context.lineWidth = 5;
      context.stroke();
    }
    //拖动小球做动画
    //判断是否拖动小球
    //如果在小球上就做动画
    canvas.onmousedown = function(e){
      var ev = e || window.event;
      var x = ev.offsetX;
      var y = ev.offsetY;
      //判断是否在红球上
      var dis = Math.pow((x-x1),2) + Math.pow((y-y1),2);
      if(dis<100){
        console.log("鼠标在红球上");
        canvas.onmousemove = function(e){
          var ev = e || window.event;
          var xx = ev.offsetX;
          var yy = ev.offsetY;
          //清除画布
          context.clearRect(0,0,canvas.width,canvas.height);
          x1 = xx;
          y1 = yy;
          //重绘制
          draw();
        }
      }
      //判断鼠标是否在蓝球上
      var dis = Math.pow((x-x2),2) + Math.pow((y-y2),2);
      if(dis<100){
        canvas.onmousemove = function(e){
          var ev = e || window.event;
          var xx1 = ev.offsetX;
          var yy1 = ev.offsetY;
          //清除画布
          context.clearRect(0,0,canvas.width,canvas.height);
          x2 = xx1;
          y2 = yy1;
          //重绘制
          draw();
        }
      }
    }
    document.onmouseup =function(){
      canvas.onmousemove = " ";
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持申博开户。


本文地址:http://www.cvmachine.com/a/question/95636.html
Tags: canvas 曲线 仿写
编辑:申博开户网
188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet 澳门彩票 unibet unibet Ladbrokes Ladbrokes 12bet 真钱的棋牌游戏 casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 nba英文官网 嘉年华官网 皇冠备用 火箭队官网 中国人论坛 bet 单双公式 博彩资讯网 w88优德 港京印刷图库 澳门足球盘 球盘 娱乐场 联众网站 沙龙365 7080棋牌游戏 真钱 澳门回归日期 大众娱乐网 卡宾官方旗舰店 mg电子 全亚洲首选288x nba即时比分 本港 中国足彩竞猜网 斗地主规则 七星彩论坛图规 网上赌博 单双规律 沈泳 华夏娱乐网 明升备用网址 梦网书城 盈禾国际 明升体育 博狗沃鑫 卡宾官方旗舰 信誉赌场 球探比分网 竞彩论坛空间 三亚娱乐 soutec 北京福利彩票 澳门彩票公司 北京pk10 凤凰 纸牌小游戏 皇冠现金代理 银河国际亚洲首选288x 三六八高手论坛 空中城市 赌球心得 188比分 让球规则 三星娱乐城 诺贝尔娱乐城 今天有nba直播吗 5060全讯网 新世纪 久乐娱乐场 世界杯盘口 易胜博 麻将单机版 华人娱乐总站 财神爷心水论坛 巴特 澳门百利宫 明升 红姐统一主图库 九龙老牌图库 打牌 娱乐王子 娱乐真人 亚豪平台 真人娱乐 飞禽走兽老虎机 188bet下载 博发娱乐城 北单 陈怀生 比分188 百万图库 老挝赌博 pc蛋蛋注册 天上人间娱乐 红姐统一图库 产业新闻网 葡京
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部