在Cairo(或任何SVG库)中,如何绘制宽度不断变化的线/路径?

时间:2014-07-02 08:48:45

标签: python svg drawing cairo

在Cairo(SVG库)中,我可以绘制线段,但是我在绘制线段时不断改变宽度。

import cairo
from cairo import SVGSurface, Context, Matrix
import numpy as np

WIDTH = 1024
HEIGHT = 700

s = SVGSurface('example.svg', WIDTH, HEIGHT)
c = Context(s)

# Transform to normal cartesian coordinate system
m = Matrix(yy=-1, y0=HEIGHT)
c.transform(m)

x = np.arange(0,10,0.01)
y = x*np.sin(2*pi*x)
c.move_to(0, 0)
c.set_line_width(5)
for i in range(len(y)):
    c.line_to(x[i]*10, (y[i]+1)*100)
    c.set_line_width(5-(5*(y[i]/10)))  # trying to change the width of the line here
c.save()
c.set_source_rgb(0.3, 0.3, 0.3)
c.restore()
c.stroke_preserve()


# Save as a SVG and PNG
s.write_to_png('example.png')
s.finish()

无论我做什么都行不通,因为当我稍后在Illustrator中打开它时,它只是一个宽度。我注意到的另一件事是虽然我认为我正在绘制所有这些线段,但在Illustrator中它显然是一条单独的路径。是否有可能有一个"连续"改变线宽?如果是这样,如果不是,如何将这些线段分开,以便我可以改变线宽?我希望它有可能!

enter image description here

0 个答案:

没有答案