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.0 图形构成实例练习二
Mar 19 HTML / CSS
用CSS3实现背景渐变的方法
Jul 14 HTML / CSS
CSS3中线性颜色渐变的一些实现方法
Jul 14 HTML / CSS
CSS3 实现穿梭星空动画
Nov 13 HTML / CSS
HTML5上传文件显示进度的实现代码
Aug 30 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
Jan 30 HTML / CSS
基于IE10/HTML5 开发
Apr 22 HTML / CSS
HTML5计时器小例子
Oct 15 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
Jul 28 HTML / CSS
微信小程序“圣诞帽”的实现思路详解
Dec 28 HTML / CSS
canvas学习总结三之绘制路径-线段
Jan 31 HTML / CSS
AmazeUI 网格的实现示例
Aug 13 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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
javascript 学习之旅 (1)
2009/02/05 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
python实现泊松图像融合
2018/07/26 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Python Selenium参数配置方法解析
2020/01/19 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
大学生自荐书范文
2013/12/10 职场文书
社团文化节邀请函
2014/01/10 职场文书
会计助理岗位职责
2014/02/17 职场文书
社会实践活动总结格式
2015/05/11 职场文书
大学生十八大感想
2015/08/11 职场文书
禁毒主题班会教案
2015/08/14 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android