Что было бы наоборот CGRectUnion ()? - PullRequest
2 голосов
/ 25 января 2011

Я могу объединить rect1 с rect2 с помощью CGRectUnion () и получить комбинированный штраф rect3.

Можно ли вычесть rect1 из rect3 (который содержит rect1) и получить оставшуюся часть rect?

Ответы [ 3 ]

3 голосов
/ 26 января 2011

Как сказал Брэд Ларсон, вы не можете сделать это в Quartz, потому что функции CGRect работают только с канатами и их составными частями (точками, размерами и одиночными числами).

Если вы программируете Mac, я бы предложил использовать другой API с именем HIShape . Это современный преемник QuickDraw Regions, и поэтому он может иметь непрямоугольные формы. К сожалению, хотя HIShape по-прежнему доступен на 64-битной Mac OS X, он не доступен на iOS.

Если вам действительно нужно что-то подобное, вам придется написать это самостоятельно, включая свой собственный класс HIShape-необязательно прямоугольной формы.

1 голос
/ 25 января 2011

Попробуйте CGRectIntersection, если я вас правильно понял.

0 голосов
/ 25 января 2011

ну, это зависит ... от того, как rect3 содержит rect1 ... я имею в виду, может случиться так, что результирующая область больше не будет прямоугольником ... например, если rect1 все находится внутри rect3, оставшаяся область непрямоугольник, поэтому вы не можете использовать объект CGRect.Вы можете получить прямоугольник только в том случае, если rect3 и rect1 полностью разделяют сторону и имеют ее (все это) совместно.Поэтому мне нужно знать, какой объект вы хотите получить с помощью этого вычитания ... может ли это быть новое изображение с 2 различными цветными областями?или перерезать результирующую область в более CGrect (верхний прямоугольник, влево, биттон, вправо ...), что вы собираетесь делать с результирующим «объектом»?

luca

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...