在Canvas画布上如何绘制出三次贝塞尔曲线?
- canvas
- 时间:2025-03-28 15:11:56
- 99次访问
Canvas提供了bezierCurveTo()方法可直接绘制三次贝塞尔曲线。该方法主要参数是两个控制点xy坐标和终止点xy坐标。与二次贝塞尔曲线一样,三次贝塞尔曲线也是在路径中进行绘制,其参数也没有包括起点坐标。接下来,我将讲解三次贝塞尔曲线的绘制过程,首先使用beginPath()方法开始路径,使用moveTo()方法将画笔移到三次贝塞尔曲线的起点,然后使用bezierCurveTo()方法绘制三次贝塞尔曲线,接着使用strokeStyle()设置三次贝塞尔曲线颜色,最后使用stroke方法对三次贝塞尔曲线进行描边,将三次贝塞尔曲线绘制在画布上。如此,我们就完成了三次贝塞尔曲线的绘制。
示例效果与源代码:
1 |
|
解释:
-
HTML结构:
- 一个
<canvas>
元素用于绘制图形,id
为canvas
,宽度和高度均设为500。
- 一个
-
CSS样式:
- 将
<canvas>
元素居中显示,并添加了一个黑色边框以便于观察。
- 将
-
JavaScript代码:
- 在
window.onload
事件中,获取Canvas上下文ctx
。 - 使用
ctx.moveTo(50, 400)
设置起始点。 - 使用
ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
绘制三次贝塞尔曲线,其中(cp1x, cp1y)
是第一个控制点的坐标,(cp2x, cp2y)
是第二个控制点的坐标,(x, y)
是终点的坐标。 - 设置线条样式,包括线条宽度
ctx.lineWidth
和线条颜色ctx.strokeStyle
,然后使用ctx.stroke()
方法描边。 - 如果需要填充曲线,可以添加闭合路径的代码(
ctx.lineTo(50, 400)
和ctx.closePath()
),并设置填充样式ctx.fillStyle
和调用ctx.fill()
方法。在这个示例中,填充部分是可选的。
- 在
运行这个HTML文件,你将看到一条从左上角到右下角的蓝色三次贝塞尔曲线绘制在Canvas画布上。这条曲线通过两个指定的控制点来定义其形状。