跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何在HTML5中利用Canvas矩形填充接口实现带圆角的自定义矩形组件

Canvas绘制圆角矩形需手动构建路径:推荐arcTo()实现等半径圆角,或arc()分段绘制异半径圆角,封装为支持四角独立半径、自动截断、透明填充及阴影的函数,并注意beginPath、半径边界和高DPI适配。 Canvas 本身没有直接的“带圆角矩形”绘制命令,但可以通过
arcTo()
或路径组合(
moveTo
+
lineTo
+
arc
)手动构建圆角矩形路径,再用
fill()
填充。关键在于精确控制四角的圆弧起点、终点和切线方向。 使用
arcTo()
绘制圆角矩形(简洁推荐)
arcTo()
适合快速生成标准圆角矩形,尤其当所有圆角半径相同时。它通过两个切线点和一个半径自动计算圆弧,避免手动算角度。 调用前需先
beginPath()
,并从左上角外侧开始(如
moveTo(x + r, y)
) 按顺时针顺序依次调用
lineTo()
到各边中点,再用
arcTo()
转向下一角 每个
arcTo(x1, y1, x2, y2, r)
中:
(x1,y1)
是当前角的“内顶点”,
(x2,y2)
是下一边的“内顶点”,
r
是圆角半径 完整闭合路径后调用
fill()
或
stroke()
使用
arc()
手动绘制(灵活可控) 当需要不同半径(如仅左上、右下圆角)或更精细控制时,用
arc()
分段绘制四段圆弧 + 四条直线更可靠。 从左上角内侧开始:
moveTo(x + r1, y)
画上边:
lineTo(x + width - r2, y)
画右上圆角:
arc(x + width - r2, y + r2, r2, -Math.PI/2, 0, false)
继续画右边、右下圆角、下边、左下圆角、左边、左上圆角,最后
closePath()
注意弧度参数:起始角、结束角以弧度为单位,顺时针为
false
(默认),逆时针为
true
封装为可复用组件函数 把逻辑封装成函数,支持传入坐标、宽高、四个方向的圆角半径(可设默认值)、填充色、描边等: 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更 下载 立即学习 “ 前端免费学习笔记(深入) ”; 函数签名示例:
roundedRect(ctx, x, y, w, h, r = 0, rTL = r, rTR = r, rBR = r, rBL = r)
内部统一处理半径边界:若某半径超过边长一半,自动截断为最大允许值(如
rTL = Math.min(rTL, w/2, h/2)
) 支持透明填充:
ctx.fillStyle = 'rgba(0,128,255,0.7)'
可选添加阴影:
ctx.shadowColor
、
shadowBlur
等 注意事项与常见问题 实际使用中容易忽略几个细节,导致圆角不显示或变形: 确保在
fill()
前已调用
beginPath()
,否则可能叠加旧路径 圆角半径不能为负,且单个角的半径不应超过对应邻边长度的一半,否则会拉直或出错 如果只想要填充无边框,记得设置
ctx.strokeStyle = 'transparent'
或跳过
stroke()
高DPI屏幕(如Retina)下需缩放 canvas 的
width
/
height
属性,并用
ctx.scale()
保持清晰度,圆角路径不受影响

相关文章