使用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 translate导致字体模糊的实例代码
Aug 30 HTML / CSS
css3.0 图形构成实例练习二
Mar 19 HTML / CSS
纯css3实现走马灯效果
Dec 26 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
Apr 24 HTML / CSS
CSS3模拟动画下拉菜单效果
Apr 12 HTML / CSS
html5构建触屏网站之网站尺寸探讨
Jan 07 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
Dec 07 HTML / CSS
详解Html5 监听拦截Android返回键方法
Apr 18 HTML / CSS
Html5 canvas画图白板踩坑
Jun 01 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
Dec 16 HTML / CSS
Html5同时支持多端sdk的小技巧
Nov 17 HTML / CSS
使用CSS设置滚动条样式
Jan 18 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
php 判断IP为有效IP地址的方法
2018/01/28 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
Python 除法小技巧
2008/09/06 Python
python插入排序算法的实现代码
2013/11/21 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
python实现抖音点赞功能
2019/04/07 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
Python 寻找局部最高点的实现
2019/12/05 Python
pytorch实现线性拟合方式
2020/01/15 Python
如何利用python进行时间序列分析
2020/08/04 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
运行时异常与一般异常有何异同?
2014/01/05 面试题
大学生毕业鉴定
2014/01/31 职场文书
生产文员岗位职责
2014/04/05 职场文书
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
考研复习计划
2015/01/19 职场文书
实名检举信范文
2015/03/02 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS