我已经在画布上创建了一条绿色路径,如下所示:
already made path http://shrani.si/f/2/125/2prKT5FY/deletemestackoverflow.png
我必须使用4 lineTo()和4 quadraticCurveTo()函数。我想构建一些看起来像这样的进度条:
the goal http://shrani.si/f/2m/BL/1Spxusi3/deleteme2stackoverflow.png
帆布有什么简单的解决方案吗?我的目标是拥有一个JavaScript函数,可以根据进度百分比更新画布形状。我知道我可以在绿色之后制作另一个蓝色的形状,但我究竟该如何计算它的合适长度呢?任何帮助非常感谢:)
答案 0 :(得分:1)
圆角矩形由9个子路径组成:
让 w 为矩形的宽度, h 为矩形的高度, r 为边界半径。
路径的总长度约为*:
长度=(w-2r)* 2 +(h -2r)* 2 +2πr
将此长度乘以百分比会给出一个sublength,即给出蓝色路径的长度。每个矩形的子路径都具有以下长度:
现在,使用sublength,按照上面给出的顺序遍历每个子路径。对于每个子路径:
*我说“约”,因为你使用二次曲线逼近角上的弧。顺便说一下,您可以使用arc
方法替代这些角落。