2011-01-25 99 views
2

我可以使用CGRectUnion()結合rect1和rect2並獲得組合rect3的罰款。CGRectUnion()會是什麼樣子?

是否有可能從rect3中減去rect1(其中包含rect1)並獲得rect的剩餘部分?

+3

`CGRectUnion()`並不真正做矩形的真正聯合,它只是返回完全包含兩個源矩形的最小矩形。你期待什麼樣的結果類型?我懷疑在大多數情況下減法會提供一個矩形。 – 2011-01-25 21:55:49

+0

密切相關:[從CGRect中減去CGRect - 不包含其他內容的最大部分](http://stackoverflow.com/q/4811623)。根據那裏的圖表,選擇的定義是結果是第一個不與第二個相交的子矩形。這當然不完全是減法,但它可能是有用的。 – 2013-07-06 21:58:07

回答

3

布拉德·拉爾森說,你不能這樣做的石英,因爲功能的CGRect什麼也沒有,但rects及其零件(點,大小和單號)的工作。

如果您在編程Mac,我會建議使用另一個名爲HIShape的API。它是QuickDraw區域的現代繼任者,因此它具有非矩形形狀的能力。不幸的是,儘管HIShape在64位Mac OS X上仍然可用,但它在iOS上不可用。

如果你真的需要這樣的東西,你將不得不自己寫下來,包括你自己的HIShape-like不一定 - 矩形的形狀類。

1

嘗試CGRectIntersection,如果我能正確理解你。

0

嗯,這取決於......在rect3如何包含Rect1的... 我的意思是,它可能發生所產生的區域不再是一個矩形... 例如,如果Rect1的是所有裏面rect3剩餘區域不是rect,所以你不能使用CGRect對象。 爲了防止rect3和rect1完全分享一方並讓它(全部)共同,您可以獲得一個rect。所以我需要知道你想通過減法獲得什麼樣的對象... 它可能是一個新的圖像與2個不同的區域着色?或者將切割區域切割成更多的棋子(上部矩形,左側,比特爾,右側...) 你打算如何處理結果的「對象」?

盧卡

相關問題