我在SVG中有一个矩形,需要从特定点绕枢轴旋转。我可以看到的最好方法是将其转换为枢轴的xy,旋转度数,然后再次进行转换。问题是第二次变换的xy。我认为它在某种程度上会承担起因和责任,只是不确定在哪里或为什么。

*
|
|
|

将旋转-90度
*---

也许我看错了方向,有人可以澄清吗?

最佳答案

如果您使用SVG transform attribute而不是尝试使用javascript自己编写代码,那么您要做的就是以(0,0)为中心将形状居中。

例如,在下面的示例中,路径中初始弧的中心位于原点。动画适用于该元素,因此它看起来像在原地旋转,而圆是固定的。包含组上的平移将旋转的中心点移动到图像的中心。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
    <g transform="translate(32, 32)" stroke="navy" fill="none">
        <path d="M -1 1.732 a 2 2 0 1 1 2 0 v 24 a 1 1 0 0 1 -2 0 Z">
            <animateTransform attributeName="transform" type="rotate"
                from="0" to="360" dur="1s" repeatDur="indefinite"/>
        </path>
    </g>
</svg>

唯一的计算是获得圆心的1.732,变换矩阵处理 Angular 。请注意,您不必使用SMIL with SVG,从javascript超时更改 Angular 也可以正常工作。

关于javascript - 在SVG中使用变换模拟枢轴旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2437542/

10-09 23:37
查看更多