使用HTML5 Canvas绘制贝塞尔曲线
HTML5 Canvas 的 `bezierCurveTo()` 方法可以用来生成贝塞尔曲线。贝塞尔曲线由一个起始点、两个控制点和一个结束点定义。与二次曲线相比,贝塞尔曲线使用两个控制点而不是一个控制点来定义,这允许我们创建更复杂的曲线。可以使用 `lineWidth`、`strokeStyle` 和 `lineCap` 属性来自定义贝塞尔曲线的样式。
什么是贝塞尔曲线?
贝塞尔曲线可能出现在桌面出版和图形程序中。贝塞尔曲线提供了更强大的形状控制。由于曲线的起点遵循其控制路径,我们可以创建环绕或反向的曲线。当需要在 Visio 风格的流程图中连接两个形状时,它们非常理想。
贝塞尔曲线可以通过两种不同的方式绘制
二次贝塞尔曲线
三次贝塞尔曲线
让我们逐一了解使用 HTML5 canvas 绘制贝塞尔曲线。
二次贝塞尔曲线
二次贝塞尔曲线是 2nd 次的贝塞尔曲线,由三个点 (A0、A1 和 A2) 定义。
示例
让我们来看一下下面的示例,它使用二次贝塞尔曲线绘制曲线。
<!DOCTYPE html>
<html>
<body>
<canvas id="mytutorial" width="300" height="150"></canvas>
<script>
var c = document.getElementById("mytutorial");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.quadraticCurveTo(25, 105, 205, 25);
ctx.stroke();
</script>
</body>
</html>
输出
当脚本执行时,它将生成一个输出,在网页上显示使用二次贝塞尔曲线绘制的曲线。
三次贝塞尔曲线
三次贝塞尔曲线是 3rd 次的贝塞尔曲线,由四个点 (A0、A1、A2 和 A4) 定义。曲线从 A0 开始,在 A3 结束。
示例
在下面的示例中,我们使用三次贝塞尔曲线绘制曲线。
<!DOCTYPE html>
<html>
<body>
<canvas id="mytutorial" width="300" height="150"></canvas>
<script>
var c = document.getElementById("mytutorial");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.bezierCurveTo(30, 110, 210, 110, 210, 30);
ctx.stroke();
</script>
</body>
</html>
输出
运行上述脚本后,它将生成一个输出,其中包含使用贝塞尔曲线在网页上绘制的曲线。
示例
您可以尝试运行以下代码,使用 canvas 绘制贝塞尔曲线。
<!DOCTYPE HTML>
<html>
<head>
<style>
#test {
width: 100px;
height:100px;
margin: 0px auto;
}
</style>
<script>
function drawShape(){
// get the canvas element using the DOM
var canvas = document.getElementById('mycanvas');
// Make sure we don't execute when canvas isn't supported
if (canvas.getContext){
// use getContext to use the canvas for drawing
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(75,40);
ctx.bezierCurveTo(75,37,70,25,50,25);
ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
ctx.bezierCurveTo(20,80,40,102,75,120);
ctx.bezierCurveTo(110,102,130,80,130,62.5);
ctx.bezierCurveTo(130,62.5,130,25,100,25);
ctx.bezierCurveTo(85,25,75,37,75,40);
ctx.fill();
} else {
alert('You need Safari or Firefox 1.5+ to see this demo.');
}
}
</script>
</head>
<body id = "test" onload = "drawShape();">
<canvas id = "mycanvas"></canvas>
</body>
</html>
输出
当用户尝试执行脚本时,它将在网页上显示使用贝塞尔曲线绘制的心形图像。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP