2017-01-27 44 views
1

我正在嘗試爲列表條目再次構建磨砂玻璃效果。Codename One的形狀限制限制是什麼?

測試這個我得到了一個異常,試圖使用com.codename1.ui.geom.GeneralPath.intersect(Rectangle)來縮小形狀。然後我使用com.codename1.ui.Graphics.clipRect(int, int, int, int),它在模擬器中運行良好。

但在我的iPhone 5S,我再次得到異常:

enter image description here

什麼限制,應使用形狀裁剪時,必須遵守?

回答

0

目前這是iOS端口(也可能是其他平臺)的限制。 iOS端口使用GeneralPath類中的裁剪和形狀相交功能。到目前爲止,我只實現了矩形與多邊形的交集。其他組合尚未支持。

請在問題跟蹤器中提出問題。

與此同時,解決方法是將您的形狀轉換爲多邊形(例如,用線段內插所有的貝塞爾曲線)。

+0

請參閱[#2023 - Shape clipping - 某些平臺上的運行時異常](https://github.com/codenameone/CodenameOne/issues/2023) –

+0

現在我將通過繪製到圖像中進行裁剪。希望這不會有進一步的限制。 –

+0

[#2026 - 形狀裁剪拋出NullPointerException](https://github.com/codenameone/CodenameOne/issues/2026) –

0

這是拋出here。根據我對邏輯的理解,分割規則在未封閉的形狀中是沒有意義的,在構建開放(或可能打開)路徑時不應使用。

+0

在模擬器中,我可以調用'com.codename1.ui.Graphics.setClip(Shape)',後跟'com.codename1.ui.Graphics.clipRect(int,int,int,int)',即使形狀是包含曲線的GeneralPath實例。這在IOS上失敗。 –

+0

儘管我可以告訴這個異常是從Java代碼而不是從本機代碼拋出的,所以失敗應該是可重現的。它可能與設備分辨率差異有關,從而導致產生稍微不同的形狀。 –

+0

我不認爲不同的解決方案是造成這種行爲的原因。它在各種分辨率的各種皮膚的模擬器工作正常,它在我的iPhone 5S和我的iPad Air 2上失敗。 –