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


Posted in HTML / CSS onDecember 29, 2017

天正在等烟雨,而我在等你,啦啦啦,欢迎关注我的简书,今天分享的是原创的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 = " ";
        }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3 border-image使用说明
Jun 23 HTML / CSS
CSS3的first-child选择器实战攻略
Apr 28 HTML / CSS
CSS3实现滚动条动画效果代码分享
Aug 03 HTML / CSS
详解CSS 3 中的 calc() 方法
Jan 12 HTML / CSS
CSS3 实现的缩略图悬停效果
Dec 09 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
Mar 01 HTML / CSS
HTML5 实战PHP之Web页面表单设计
Oct 09 HTML / CSS
HTML5中Localstorage的使用教程
Jul 09 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
Jan 09 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 HTML / CSS
使用CSS实现黑白格背景效果
Jun 01 HTML / CSS
html5+实现plus.io进行拍照和图片等获取
Jun 01 HTML / CSS
Canvas绘制浮动球效果的示例
Dec 29 #HTML / CSS
微信小程序“圣诞帽”的实现思路详解
Dec 28 #HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
Dec 28 #HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
Dec 27 #HTML / CSS
canvas实现圆形进度条动画的示例代码
Dec 26 #HTML / CSS
详解HTML5 录音的踩坑之旅
Dec 26 #HTML / CSS
移动HTML5前端框架—MUI的使用
Dec 18 #HTML / CSS
You might like
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
值得收藏的10道python 面试题
2019/04/15 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
python圣诞树编写实例详解
2020/02/13 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
Java面试笔试题大全
2016/11/23 面试题
新闻记者个人求职的自我评价
2013/11/28 职场文书
书香校园建设方案
2014/05/02 职场文书
环境保护标语
2014/06/20 职场文书
身份证丢失证明
2015/06/19 职场文书
同学聚会开幕词
2019/04/02 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
nginx实现动静分离的方法示例
2021/11/07 Servers
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript