贝塞尔曲线
贝塞尔曲线的专业介绍请参见:
http://www.cnblogs.com/jay-dong/archive/2012/09/26/2704188.html
下面是canvas绘制贝塞尔曲线的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>canvas绘图</title>
<script>
window.onload = function()
{
drawCanvas1();
drawCanvas2();
}
function drawCanvas1()
{
var canvas=document.getElementById("myCanvas1");
var context=canvas.getContext("2d");
context.beginPath();
context.moveTo(20,20);
context.quadraticCurveTo(30,100,200,90);
context.stroke();
//标注坐标点
//context.textAlign = "center";
context.fillStyle = "red";
context.fillText("开始点(20,20)",20,20);
context.fillText("控制点(30,100)",30,100);
context.fillText("结束点(200,90)",200,90);
//红色辅助线
context.strokeStyle = "red";
context.beginPath();
context.moveTo(20,20);
context.lineTo(30,100);
context.lineTo(200,90);
context.stroke();
}
function drawCanvas2()
{
var canvas = document.getElementById("myCanvas2");
var context = canvas.getContext("2d");
context.beginPath();
context.moveTo(20,20);
context.bezierCurveTo(20,100,200,300,200,20);
context.stroke();
//标注坐标点
//context.textAlign = "center";
context.fillStyle = "red";
context.fillText("开始点(20,20)",20,20);
context.fillText("控制点1(20,100)",20,100);
context.fillText("控制点2(200,300)",200,300);
context.fillText("结束点(200,20)",200,20);
//红色辅助线
context.strokeStyle = "red";
context.beginPath();
context.moveTo(20,20);//起始点
context.lineTo(20,100);//控制点1
context.lineTo(200,300);//控制点2
context.lineTo(200,20);//结束点
context.stroke();
}
</script>
</head>
<body>
<canvas id="myCanvas1" width="400" height="400" style="border:#F00 solid 1px">
您的浏览器不支持canvas
</canvas>
<canvas id="myCanvas2" width="400" height="400" style="border:#F00 solid 1px">
您的浏览器不支持canvas
</canvas>
<br />
</body>
</html>
效果如下: