这是我现在使用的代码:开罗(w/Python):是否可以使用透明线填充多边形?
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, *image.size)
context = cairo.Context(surface)
context.set_source_rgba(1, 1, 1, 1)
context.new_path()
for i in xrange(len(points)):
context.line_to(*points[i])
context.close_path()
context.fill()
的问题是,它填补了相同的颜色我绘制多边形。我试图在这个画一个新的多边形,只做context.stroke()
,而不是fill()
,但只有当我使用不同的颜色,因为否则白色是在下面。我试着用(0,0,0,0)
,所以它会是透明的,但是然后白色在它下面。
我可以得出一个颜色的线(比如(0.5,0.5,0.5,1)
),它与write_to_png
保存为图像,与PIL加载,转换为numpy.array和更换正确的颜色与背景颜色(0, 0, 0, 0)
每个像素,但是这不是高效。
我也尝试将线宽设置为0,这也不起作用。
此外,我很好,其他方法,让我这样做,而不是开罗。我尝试过ImageDraw的polygon
,但它没有绘制出确切的形状(我不确定如何解释,但它在多边形之外绘制一些额外的像素,它不应该),所以ImageDraw不会帮助我。
我不能正是你想要的了解。一个人不会用“线”“填充”一个形状 - 你想做什么?如果yu只想要多边形的轮廓,请尝试使用“.stroke()”而不是“.fill()”。如果您希望绘图颜色透明,请为Alpha使用中间值(颜色中的第四个元素 - 您将其始终设置为1) – jsbueno 2011-03-23 02:27:09
当我使用填充时,它会在多边形上绘制轮廓。我不想要那个轮廓/线条。 – pppphhhhuuuu 2011-03-23 02:31:04