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选择器的研究(详解)
Sep 16 HTML / CSS
css3实现平移效果(transfrom:translate)的示例
Nov 13 HTML / CSS
详解CSS3:overflow属性
Nov 17 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
Nov 18 HTML / CSS
简单介绍HTML5中audio标签的使用
Sep 24 HTML / CSS
HTML5 canvas基本绘图之文字渲染
Jun 27 HTML / CSS
html5是什么_动力节点Java学院整理
Jul 07 HTML / CSS
快速实现一个简单的canvas迷宫游戏的示例
Jul 04 HTML / CSS
Html5 canvas画图白板踩坑
Jun 01 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
Jan 25 HTML / CSS
Web前端:CSS最强总结 附详细代码
Mar 31 HTML / CSS
CSS实现渐变色边框(Gradient borders)的5种方法
Mar 25 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 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
js精度溢出解决方案
2012/12/02 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
简单实现python爬虫功能
2015/12/31 Python
python中常用的九种预处理方法分享
2016/09/11 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
Python中协程用法代码详解
2018/02/10 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
python xlwt如何设置单元格的自定义背景颜色
2019/09/03 Python
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
市场营销毕业生自荐信
2013/11/23 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
三行辞职书范文
2015/02/26 职场文书
高中信息技术教学反思
2016/02/16 职场文书
用python自动生成日历
2021/04/24 Python
Python 图片添加美颜效果
2022/04/28 Python