我想在画布上绘制一个矩形边框,该矩形边框具有不同的宽度和圆角。此绘图应与浏览器中具有相同参数的div完全相同。
我不清楚内弧应该用什么算法(在截图中用蓝色标记)。它是用贝塞尔曲线绘制的吗?如果是,请告诉我它的参数。
如果有人能提供一个代码链接,例如,Chrome或Mozilla浏览器的代码,在那里你可以确切地看到这些弧线是如何绘制的,我将不胜感激。
浏览器中的一个示例可以在这里查看:
<div class="rect"></div>
我试着为Bezier曲线选择各种参数,但总是有小错误。即算法本身没有回升。同样,我试着画一条椭圆曲线,但这也是非常不同的html版本。
我通过将html div覆盖在canvas元素上来检查结果。
1条答案
按热度按时间vohkndzv1#
直接引用规格:
填充边(内边界)半径是外边界半径减去相应的边界厚度。如果这导致负值,则内半径为零。
因此在我们的例子中,这给出了我们右上角四分之一椭圆的x轴半径应该是
220px
从border-radius
值减去10px
从border-right-width
值,y轴半径应该是220px - 150px
。要在canvas中绘制它,我们可以使用方便的
roundRect()
方法,它接受与border-radius
相同的参数,因此允许我们控制圆角矩形的每个角的每个轴。如果你只想画那个特定的角,那么使用
ctx.ellipse()
方法,使用我们上面计算的相同半径: