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麻将筛子3D翻转特效的实例教程
Dec 31 HTML / CSS
css3类选择器之结合元素选择器和多类选择器用法
Mar 09 HTML / CSS
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
Aug 18 HTML / CSS
纯css实现照片墙3D效果的示例代码
Nov 13 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
Oct 08 HTML / CSS
html+css实现自定义图片上传按钮功能
Sep 04 HTML / CSS
HTML5的结构和语义(1):前言
Oct 17 HTML / CSS
html5设计原理(推荐收藏)
May 17 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
HTML5实现移动端复制功能
Apr 19 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
Aug 20 HTML / CSS
前端水印的简单实现代码示例
Dec 02 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
给Function做的OOP扩展
2009/05/07 Javascript
javascript 跨浏览器开发经验总结(五) js 事件
2010/05/19 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
location对象的属性和方法应用(解析URL)
2013/04/12 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
实例讲解v-if和v-show的区别
2019/01/31 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
python中logging包的使用总结
2018/02/28 Python
pandas中去除指定字符的实例
2018/05/18 Python
python实现爬取图书封面
2018/07/05 Python
使用TensorFlow实现SVM
2018/09/06 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
什么是类的返射机制
2016/02/06 面试题
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
医学生自我鉴定范文
2013/11/08 职场文书
英文求职信写作小建议
2014/02/16 职场文书
考试诚信承诺书
2014/05/23 职场文书
工程售后服务方案
2014/06/08 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
加强作风建设心得体会
2014/10/22 职场文书