使用canvas绘制贝塞尔曲线


Posted in HTML / CSS onDecember 17, 2014

1、二次贝塞尔曲线

quadraticCurveTo(cpx,cpy,x,y)

//cpx,cpy表示控制点的坐标,x,y表示终点坐标;

数学公式表示如下:

二次方贝兹曲线的路径由给定点P0、P1、P2的函数B(t)追踪:

使用canvas绘制贝塞尔曲线

使用canvas绘制贝塞尔曲线

代码实例:

复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>canvas直线</title>
<meta name="Keywords" content="">
<meta name="author" content="@my_programmer">
<style type="text/css">
body, h1{margin:0;}
canvas{margin: 20px;}
</style>
</head>
<body onload="draw()">
<h1>二次贝塞尔曲线</h1>
<canvas id="canvas" width=200 height=200 style="border: 1px solid #ccc;"></canvas>
<script>
function draw() {
var canvas=document.getElementById('canvas');
var context=canvas.getContext('2d');
//绘制起始点、控制点、终点
context.beginPath();
context.moveTo(20,170);
context.lineTo(130,40);
context.lineTo(180,150);
context.stroke(); </p> <p> //绘制2次贝塞尔曲线
context.beginPath();
context.moveTo(20,170);
context.quadraticCurveTo(130,40,180,150);
context.strokeStyle = "red";
context.stroke();
}
</script>
</body>
</html>

代码效果:

使用canvas绘制贝塞尔曲线

2、三次贝塞尔曲线

bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)

//cp1x,cp1y表示第一个控制点的坐标,cp2x,cp2y表示第二个控制点的坐标,x,y表示终点的坐标;

数学公式表示如下:

P0、P1、P2、P3四个点在平面或在三维空间中定义了三次方贝兹曲线。曲线起始于P0走向P1,并从P2的方向来到P3。一般不会经过P1或P2;这两个点只是在那里提供方向资讯。P0和P1之间的间距,决定了曲线在转而趋进P3之前,走向P2方向的“长度有多长”。

使用canvas绘制贝塞尔曲线

使用canvas绘制贝塞尔曲线

代码实例:

复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>canvas直线</title>
<meta name="Keywords" content="">
<meta name="Description" content="">
<style type="text/css">
body, h1{margin:0;}
canvas{margin: 20px; }
</style>
</head>
<body onload="draw()">
<h1>三次贝塞尔曲线</h1>
<canvas id="canvas" width=200 height=200 style="border: 1px solid #ccc;"></canvas>
<script>
function draw() {
var canvas=document.getElementById('canvas');
var context=canvas.getContext('2d');
//绘制起始点、控制点、终点
context.beginPath();
context.moveTo(25,175);
context.lineTo(60,80);
context.lineTo(150,30);
context.lineTo(170,150);
context.stroke(); </p> <p> //绘制3次贝塞尔曲线
context.beginPath();
context.moveTo(25,175);
context.bezierCurveTo(60,80,150,30,170,150);
context.strokeStyle = "red";
context.stroke();
}
</script>
</body>
</html>

代码效果图:

使用canvas绘制贝塞尔曲线

是不是很炫酷的效果。。。HTML5+canvas真是个好玩的东西,上瘾了。

HTML / CSS 相关文章推荐
基于CSS3实现的几个小loading效果
Sep 27 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
Jun 03 HTML / CSS
纯css3实现图片翻牌特效
Mar 10 HTML / CSS
CSS3中的display:grid,网格布局介绍
Oct 30 HTML / CSS
纯CSS3实现圆圈动态发光特效动画的示例代码
Mar 08 HTML / CSS
HTML5 Notification(桌面提醒)功能使用实例
Mar 17 HTML / CSS
使用分层画布来优化HTML5渲染的教程
May 08 HTML / CSS
谈一谈HTML5本地存储技术
Mar 02 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
Dec 14 HTML / CSS
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
Dec 20 HTML / CSS
div与span之间的区别与使用介绍
Dec 06 HTML / CSS
td 内容自动换行 table表格td设置宽度后文字太多自动换行
Dec 24 HTML / CSS
使用canvas绘制超炫时钟
Dec 17 #HTML / CSS
24个canvas基础知识小结
Dec 17 #HTML / CSS
html5使用canvas绘制文字特效
Dec 15 #HTML / CSS
html5使用canvas绘制太阳系效果
Dec 15 #HTML / CSS
html5使用canvas绘制一张图片
Dec 15 #HTML / CSS
html5使用canvas画三角形
Dec 15 #HTML / CSS
html5使用canvas画空心圆与实心圆
Dec 15 #HTML / CSS
You might like
新52大事件
2020/03/03 欧美动漫
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
js类 from qq
2006/11/13 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
用python处理MS Word的实例讲解
2018/05/08 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python把1变成01的步骤总结
2019/02/27 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
django列表筛选功能的实现代码
2020/03/27 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
小学少先队活动方案
2014/02/18 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
信访工作汇报材料
2014/10/27 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
队名及霸气口号大全
2015/12/25 职场文书
高二化学教学反思
2016/02/22 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers