使用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的过滤效果简单实例
Aug 03 HTML / CSS
CSS3 实现雷达扫描图的示例代码
Sep 21 HTML / CSS
纯CSS3实现圆圈动态发光特效动画的示例代码
Mar 08 HTML / CSS
涂鸦板简单实现 Html5编写属于自己的画画板
Jul 05 HTML / CSS
Html5上传图片 移动端、PC端通用代码
Jun 08 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
Jul 06 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
Dec 09 HTML / CSS
HTML5 语音搜索只需一句代码
Jan 03 HTML / CSS
浅析移动设备HTML5页面布局
Dec 01 HTML / CSS
Html5 audio标签样式的修改
Jan 28 HTML / CSS
HTML5新特性之语义化标签
Oct 31 HTML / CSS
html5 canvas实现给图片添加平铺水印
Aug 20 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
mysql5详细安装教程
2007/01/15 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
JS hashMap实例详解
2016/05/26 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
Python基于PycURL实现POST的方法
2015/07/25 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
大专应届生个人简历的自我评价
2013/10/15 职场文书
迟到早退检讨书
2014/02/10 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers