這是我現在使用的代碼:開羅(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