2010-11-16 42 views
3

有沒有辦法填補封閉路徑(多邊形)以外的所有內容?(py)開羅 - 填充

背景:我想渲染一些海岸線地圖 - 所以有時我需要用藍色填充海洋,所以我認爲這將是最簡單的,在我的情況下,海岸線多邊形與藍色的顏色。

在此先感謝!

+0

這不是一個答案,但是如果你想用Python渲染地圖,你可能會比檢查[shapely](http://pypi.python.org/pypi/Shapely)和[descartes ](http://pypi.python.org/pypi/descartes)。 – fmark 2010-11-16 09:36:46

回答

2

您可以將覆蓋整個繪圖區域的矩形添加到海岸線路徑,並將填充規則設置爲cairo.FILL_RULE_EVEN_ODD。在填充原始路徑之外的區域之後調用fill()。 (如果您選擇適合您的矩形正確的方向,你可以跳過設置填充規則。)

0

在整個開羅表面畫一個藍色的大矩形,然後在上面繪製你的海岸線?

0

雖然你可以創建一個閉合路徑表面的大小,然後用solidpattern填充(填充規則贏得」對於一個簡單的矩形而言),使用上下文paint()方法會更容易,該方法將填充當前剪輯區域(最初設置爲整個表面)。在繪製地圖/海岸線邊界並填充它們以使它們位於背景之上之前,執行此操作非常重要。

+0

在我的回答中,填充規則*確實很重要。我添加了一個詞來使其更清晰。 – 2010-11-17 14:00:19

+0

@Sven Marnach:我從來沒有說過在你的答案中沒有關係,它將填充已經繪製的區域,假定當fill()被調用時,海岸線路徑和周圍路徑都是活動的,並且它們的路徑是計數器對彼此。 – martineau 2010-11-17 18:05:29