使用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教程:边框属性border的极致应用
Apr 02 HTML / CSS
用CSS禁用输入法(CSS3 UI规范)实例解析
Dec 04 HTML / CSS
使用CSS3来绘制一个月食图案
Jul 18 HTML / CSS
CSS3 RGBA色彩模式使用实例讲解
Apr 26 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
May 31 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
Jan 09 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
Apr 21 HTML / CSS
HTML5的download属性详细介绍和使用实例
Apr 23 HTML / CSS
html5定位并在百度地图上显示的示例
Apr 27 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
Oct 23 HTML / CSS
HTML5拖放效果的实现代码
Nov 17 HTML / CSS
HTML5 实现图片上传预处理功能
Feb 06 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
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
如何在PHP中使用数组
2020/06/09 PHP
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
解决vuex刷新数据消失问题
2020/11/12 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
python异常处理try except过程解析
2020/02/03 Python
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
幼儿园小班教学反思
2014/02/02 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
社区科普工作方案
2014/06/03 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL
Vue全局事件总线你了解吗
2022/02/24 Vue.js
python处理json数据文件
2022/04/11 Python