You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用svgwrite在保存SVG前将路径旋转180°?

在svgwrite中保存前将图形旋转180°

当然可以实现!你只需要给目标图形元素添加旋转变换即可,svgwrite支持直接通过元素的transform属性来设置这类变换,下面给你两种实用的实现方式:

方法一:直接给path添加rotate变换

你可以在创建path时直接指定transform属性。需要注意:默认旋转是围绕SVG画布原点(0,0)进行的,如果你的箭头不在原点,旋转后可能会偏离预期位置。如果希望围绕箭头自身中心旋转,需要先计算它的中心坐标,再用rotate(角度, 中心x, 中心y)的格式设置。

针对你的代码,修改后的示例如下:

import svgwrite

dwg = svgwrite.Drawing('arrow.svg')
# 先计算箭头的大致中心:你的路径x范围0-66.28,y范围243.76-283.45,中心约为(33.14, 263.6)
path = dwg.path(
    d='M 0,283.45145 H 39.819792 v 13.22917 L 66.278127,270.22229 39.819793,243.76395 v 13.22917 H 0 Z',
    transform='rotate(180, 33.14, 263.6)'
)
dwg.add(path)
dwg.save()

方法二:使用svgwrite的Transform工具类

svgwrite提供了更直观的Transform类来构建变换,可读性更强:

import svgwrite
from svgwrite.transforms import Transform

dwg = svgwrite.Drawing('arrow.svg')
path = dwg.path(d='M 0,283.45145 H 39.819792 v 13.22917 L 66.278127,270.22229 39.819793,243.76395 v 13.22917 H 0 Z')
# 创建旋转变换,参数依次为角度、旋转中心x、旋转中心y
transform = Transform()
transform.rotate(180, 33.14, 263.6)
path.update(transform=transform)
dwg.add(path)
dwg.save()

精准获取旋转中心的技巧

如果想要更精准的中心坐标,可以通过path.bounding_box()方法获取路径的边界框,再计算中心:

bbox = path.bounding_box()
center_x = (bbox[0] + bbox[2]) / 2
center_y = (bbox[1] + bbox[3]) / 2
# 之后用center_x和center_y作为旋转中心参数即可

这样就能让箭头精准围绕自身中心完成180度旋转,保存后的SVG就是你想要的效果啦!

内容的提问来源于stack exchange,提问作者mrgou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:12:23