【发布时间】:2011-03-23 02:12:12
【问题描述】:
这是我现在使用的代码:
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 并用正确的颜色替换每个像素与背景颜色@ 987654327@ 但效率不高。
我也尝试将线宽设置为 0,但这也不起作用。
另外,我可以使用其他方法让我做到这一点,而不是开罗。我试过 ImageDraw 的 polygon 但它没有画出确切的形状(我不知道如何解释,但它在不应该的多边形之外画了一些额外的像素),所以 ImageDraw 不会帮不了我。
【问题讨论】:
-
我无法完全理解您想要什么。一个人不会用“线”“填充”一个形状——你想做什么?如果您只想要多边形的轮廓,请尝试使用“.stroke()”而不是“.fill()”。如果您希望绘图颜色透明,请使用 Alpha 的中间值(颜色的第 4 个分量 - 您始终将其设置为 1)
-
当我使用填充时,它会在多边形上绘制轮廓。我不想要那个轮廓/线。
标签: python image drawing cairo