我已經編寫了自己的多行類,基本上保留了可以使用矩陣修改的點的列表。多邊形線可以添加到其他多邊形線並加入到公共端點。當端點等於起點時,多邊形線將代表多邊形。剪切路徑問題
然後我有一個方法通過迭代包含一系列lineTo()調用的點列表來將我的多邊形變成一個Path對象。然後,此路徑將應用於作爲我的View的onDraw方法中的剪輯路徑的畫布。
它適用於複雜的多邊形,我可以繪製該路徑來驗證它的準確性。
到目前爲止,除了當我在中間有一個不規則孔的複合多邊形時我注意到問題。因爲這是另一個多邊形內的多邊形,所以我應該停止將它稱爲多邊形。
例如,考慮下圖,其中中間的外框和「城堡」形狀都是用作剪輯路徑的相同Path對象的組成部分。 #表示彩繪區域。
+---------+
|#########|
|#+-+#+-+#|
|#| |#| |#|
|#| +-+ |#|
|#| |#|
|#+-----+#|
|#########|
+---------+
我期望在外框和內部「城堡」形狀內部的所有東西都被裁剪掉。我看到的問題是內部形狀沒有被正確裁剪。似乎是射線追蹤算法的一個問題。
任何想法都會有所幫助。
編輯:此外,我試圖測試每個Region.Op模式,並沒有解決這個問題。我懷疑我需要採取措施來檢測是否有「漏洞」並做一些有創意的事情。