2011-01-25 95 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个不同的区域着色?或者将切割区域切割成更多的棋子(上部矩形,左侧,比特尔,右侧...) 你打算如何处理结果的“对象”?

卢卡

相关问题