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 相关文章推荐
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
Dec 28 HTML / CSS
CSS3 Flexbox中flex-shrink属性的用法示例介绍
Dec 30 HTML / CSS
CSS图片翻转动画技术详解(IE也实现了)
Apr 03 HTML / CSS
使用CSS3配合IE滤镜实现渐变和投影的效果
Sep 06 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
Dec 03 HTML / CSS
浅谈css3中的前缀
Jul 20 HTML / CSS
CSS3属性 line-clamp控制文本行数的使用
Mar 19 HTML / CSS
自定义html标记替换html5新增元素
Oct 17 HTML / CSS
HTML5使用drawImage()方法绘制图像
Jun 23 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
Sep 06 HTML / CSS
video实现有声音自动播放的实现方法
May 20 HTML / CSS
CSS几步实现赛博朋克2077风格视觉效果
Jun 16 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 setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
React优化子组件render的使用
2019/05/12 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
pandas按条件筛选数据的实现
2021/02/20 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
网络工程师的自我评价
2013/10/02 职场文书
网络书店创业计划书
2014/02/07 职场文书
秘书英文求职信
2014/04/16 职场文书
2014年班干部工作总结
2014/11/25 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
《叶问2》观后感
2015/06/15 职场文书