微信小程序允许对普通元素通过 border-radius
的设置来进行圆角的绘制,但有时候在使用 canvas
绘图的时候,也需要圆角,例如需要将页面上某块区域导出为图片下载到本地的时候,常用的解决方法就是使用 canvas
将这块区域绘制出来,最后导出 canvas
即可,但是 canvas
没有直接提供圆角的绘制 api
,所以需要 曲线救国
圆角矩形与一般矩形的区别在于,前者的四个角都是圆弧,所以只需要将一般矩形的四个角切掉,换成圆弧即可,如下图就是一个一般矩形被切掉了四个角的样子:
很明显,切掉了四个角的矩形,剩下其实就是四条 line
,既然如此,完全可以跳过绘制矩形然后切角这一步,因为切角的结果就是四条边(line
),直接绘制四条边即可。
然后在每两条边的缺角处绘制弧度为 0.5 * Math.PI
的圆弧,最后这四条边与四个圆弧所封闭的图形就是圆角矩形:
原理知道了,代码就很好写了,这里只说几个注意点:
- 封闭图形的