SVG 多重变换 - 旋转然后水平平移
SVG mutltiple transform - rotate then translate horizontally
我尝试使用 SVG 将它旋转 30 度,然后水平平移 100 度。问题是当我旋转坐标系时,它会旋转,所以当我尝试平移时,我将平移对象沿着旋转的 x 轴,现在与水平方向成 30 度角。
旋转后有没有水平平移的方法?
<g transform="rotate(30 50 50) translate(100 0)">
<rect x="0" y="0" fill="blue" width="100" height="100" />
</g>
我想创建用于上下左右旋转和平移的控制按钮。这些将创建一个字符串,该字符串将使用数据绑定到 svg 的转换 属性,从而按顺序转换对象。但是平移需要相对于视口而不是对象的旋转方式。
我正在使用 vue.js 数据绑定框架。
我也不想用css。
谢谢,
如果您希望轮换先发生,则必须将其放在 transform
属性中。
<g transform="translate(100 0) rotate(30 50 50)">
<rect x="0" y="0" fill="blue" width="100" height="100" />
</g>
为什么?因为上面的代码片段相当于
<g transform="translate(100 0)">
<g transform="rotate(30 50 50)">
<rect x="0" y="0" fill="blue" width="100" height="100" />
</g>
</g>
您可以认为转变是由内而外发生的。矩形在外部平移变换之前受到内部旋转变换的影响。
或者换一种方式思考,外部变换创建一个向右移动 100 的新坐标系。其中有一个单独的坐标系,旋转了 30 度。在其中绘制了矩形。
我尝试使用 SVG 将它旋转 30 度,然后水平平移 100 度。问题是当我旋转坐标系时,它会旋转,所以当我尝试平移时,我将平移对象沿着旋转的 x 轴,现在与水平方向成 30 度角。
旋转后有没有水平平移的方法?
<g transform="rotate(30 50 50) translate(100 0)">
<rect x="0" y="0" fill="blue" width="100" height="100" />
</g>
我想创建用于上下左右旋转和平移的控制按钮。这些将创建一个字符串,该字符串将使用数据绑定到 svg 的转换 属性,从而按顺序转换对象。但是平移需要相对于视口而不是对象的旋转方式。
我正在使用 vue.js 数据绑定框架。
我也不想用css。
谢谢,
如果您希望轮换先发生,则必须将其放在 transform
属性中。
<g transform="translate(100 0) rotate(30 50 50)">
<rect x="0" y="0" fill="blue" width="100" height="100" />
</g>
为什么?因为上面的代码片段相当于
<g transform="translate(100 0)">
<g transform="rotate(30 50 50)">
<rect x="0" y="0" fill="blue" width="100" height="100" />
</g>
</g>
您可以认为转变是由内而外发生的。矩形在外部平移变换之前受到内部旋转变换的影响。
或者换一种方式思考,外部变换创建一个向右移动 100 的新坐标系。其中有一个单独的坐标系,旋转了 30 度。在其中绘制了矩形。