SVGwrite:导出为png/jpg与背景颜色和填充环



我一直在使用svgwrite库编写一个小Python脚本。我现在想使它导出我的图形与背景颜色,似乎在我看来,我可能不得不将其转换为另一种格式这样做(png或jpg应该是好的)。我不太了解svg格式,但我确信它可以处理原生背景色。

同时,我正在绘制两个共享同一中心的圆圈,并且我想用特定的颜色填充它们之间的空间,就像绘制环一样,但我无法在文档中找到如何这样做。

提前感谢您的帮助

这是一个用颜色创建圆圈的例子。第一个圆圈有一个填充颜色和一个单独的描边颜色,所以它和两个圆圈一样,小的那个在上面。第二个圆圈有描边颜色,但填充='none',只是一个环形形状。最后一组圆圈表明,把一个圆圈放在与另一个圆圈相同的地方,可以覆盖下面的东西。这可能是你想要的环。

import svgwrite
def create_svg(name):
    SVG_SIZE = 900
    color_list = ["rgb(123, 80, 86)", "rgb(67, 130, 124)", "red"] 
    dwg = svgwrite.Drawing(name, (SVG_SIZE, SVG_SIZE), debug=True)
    # background will be white.
    dwg.add(dwg.rect(insert=(0, 0), size=('100%', '100%'), fill='white'))
    y = 50
    circle_1 = dwg.circle(center=(100, y), r=30, fill='green', 
            stroke='blue', stroke_width=5)
    dwg.add(circle_1)
    circle_2 = dwg.circle(center=(200, y), r=30, fill='none', 
            stroke='blue', stroke_width=5)
    dwg.add(circle_2)
    y += 300
    for i in range(3):
        circle_i = dwg.circle(center=(150, y), r=(100 - 30 * i), 
                fill=color_list[i], stroke='none', stroke_width=0)
        dwg.add(circle_i)
    dwg.save()
if __name__ == '__main__':
    create_svg('filling_annulus.svg')

背景

对于你的背景色,最简单的解决方案是画一个矩形填充整个文档。
<rect width="100%" height="100%" fill="red" />

还有其他的方法。SVG 1.2定义了viewport-fill,但并非所有渲染器都支持。在大多数浏览器上,background-color可以工作,但它可能无法在非浏览器的SVG渲染器上工作。最简单的方法就是使用矩形。

我猜你的意思是你想在戒指里面有一个透明的洞?如果是这样,有几种方法可以做到这一点。最直接的方法就是创建一条有两条子路径的路径。一个给外圈,一个给内圈。当两个子路径重叠且fill-rule属性设置为evenodd时,形成一个孔。

<path d="M -100,0
         A 100,100, 0,1,0, 100,0
         A 100,100, 0,1,0, -100,0
         M -75,0
         A 75,75, 0,1,0, 75,0
         A 75,75, 0,1,0, -75,0
         Z"
stroke="black" fill="orange" fill-rule="evenodd"/>

演示

fill-rule的更多信息在这里:http://www.w3.org/TR/SVG/painting.html#FillRuleProperty

最新更新