JavaScript Canvas 椭圆教程
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨如何使用 JavaScript 在 HTML Canvas 上绘制椭圆。椭圆是多种图形应用程序中使用的通用形状。掌握椭圆绘制将大大扩展您的 Canvas 绘图能力。
基本定义
椭圆是一种规则的卵形,由其中心点、两个半径(x 和 y)以及旋转角度定义。在 Canvas 上,可以使用 ellipse()
方法或通过近似圆弧来绘制椭圆。
ellipse()
方法接受中心坐标、x 和 y 半径、旋转、开始和结束角度以及绘图方向等参数。这提供了对椭圆外观和位置的精确控制。
基本椭圆
此示例演示了如何在 Canvas 上绘制一个简单的填充椭圆。
<!DOCTYPE html> <html> <head> <title>Basic Canvas Ellipse</title> </head> <body> <canvas id="myCanvas" width="300" height="200"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.ellipse(150, 100, 80, 50, 0, 0, Math.PI * 2); ctx.fillStyle = 'blue'; ctx.fill(); </script> </body> </html>
此代码在 (150,100) 处创建一个蓝色的填充椭圆,x 半径为 80,y 半径为 50。旋转角度为 0(水平),我们绘制一个完整的椭圆(0 到 2π 弧度)。
ellipse()
方法在路径上下文中调用。定义路径后,我们设置填充样式并调用 fill()
进行渲染。
描边椭圆
此示例展示了如何绘制具有自定义描边属性的椭圆轮廓。
<!DOCTYPE html> <html> <head> <title>Stroked Ellipse</title> </head> <body> <canvas id="myCanvas" width="300" height="200"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.ellipse(150, 100, 100, 60, 0, 0, Math.PI * 2); ctx.strokeStyle = 'red'; ctx.lineWidth = 5; ctx.stroke(); </script> </body> </html>
在这里,我们创建了一个椭圆轮廓而不是填充形状。描边颜色为红色,线宽为 5px。椭圆中心为,x 半径为 100,y 半径为 60。
请注意,我们使用 stroke()
而不是 fill()
来仅绘制轮廓。这演示了 Canvas 上填充形状和描边形状之间的区别。
部分椭圆(圆弧)
此示例通过指定开始和结束角度来演示绘制部分椭圆。
<!DOCTYPE html> <html> <head> <title>Partial Ellipse</title> </head> <body> <canvas id="myCanvas" width="300" height="200"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.ellipse(150, 100, 90, 50, 0, Math.PI/4, Math.PI * 1.5); ctx.strokeStyle = 'green'; ctx.lineWidth = 3; ctx.stroke(); </script> </body> </html>
此代码绘制一个部分椭圆弧,从 π/4 弧度 (45°) 开始,到 1.5π 弧度 (270°) 结束。结果是一个绿边四分之三椭圆。
Canvas 中的角度以弧度为单位测量,0 指向右侧。正角度顺时针旋转。此示例演示了如何创建任意部分的椭圆弧。
旋转椭圆
此示例展示了如何绘制一个由指定角度旋转的椭圆。
<!DOCTYPE html> <html> <head> <title>Rotated Ellipse</title> </head> <body> <canvas id="myCanvas" width="300" height="200"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.ellipse(150, 100, 80, 40, Math.PI/4, 0, Math.PI * 2); ctx.fillStyle = 'purple'; ctx.fill(); </script> </body> </html>
在这里,我们将椭圆旋转 π/4 弧度 (45°)。旋转参数是 ellipse()
方法的第五个参数。椭圆保持其 x 和 y 半径,但被倾斜了。
旋转围绕中心点发生。此示例演示了如何创建非轴对齐的椭圆以实现更复杂的设计。
带渐变填充的椭圆
这个高级示例将径向渐变填充应用于椭圆。
<!DOCTYPE html> <html> <head> <title>Gradient Ellipse</title> </head> <body> <canvas id="myCanvas" width="300" height="200"></canvas> <script> const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); const gradient = ctx.createRadialGradient(150, 100, 0, 150, 100, 80); gradient.addColorStop(0, 'white'); gradient.addColorStop(1, 'orange'); ctx.beginPath(); ctx.ellipse(150, 100, 100, 60, 0, 0, Math.PI * 2); ctx.fillStyle = gradient; ctx.fill(); </script> </body> </html>
这创建了一个径向渐变,从中心白色开始,到边缘橙色过渡。渐变与椭圆的尺寸完美对齐。
createRadialGradient
方法定义了渐变的内圆和外圆。当应用于椭圆时,它会产生类似 3D 球体的效果。
来源
在本文中,我们探索了在 HTML Canvas 上绘制椭圆的各种技术。从基本形状到旋转和渐变填充的椭圆,这些方法可在 Web 应用程序中实现复杂的图形。
作者
列出 所有 JS Canvas 教程。