Убедитесь, что вы ссылаетесь на актив изображения , который действительно существует . Я добавил свои файлы в каталог активов XCode (.xcassets), как обычно, но забыл переименовать имя по умолчанию «Image» в имя, которое я использовал в раскадровке.
Сделайте один контур обтравочным контуром, нарисуйте другой контур, затем найдите пиксели, которые пережили процесс отсечения:
// initialise and erase context
CGContextAddPath(context, path1);
CGContextClip(context);
// set fill colour to intersection colour
CGContextAddPath(context, path2);
CGContextFillPath(context);
// search for pixels that match intersection colour
Это работает, потому что отсечение = пересечение.
Не забывайте, что пересечение зависит от определения интерьера, которых существует несколько. В этом коде используется правило заполнения числа обмоток, вам может понадобиться правило четной нечетности или что-то еще. Если внутренняя обстановка не мешает вам спать по ночам, тогда этот код подойдет.
Мой предыдущий ответ включал рисование прозрачных кривых в контексте RGBA. Это решение превосходит старое, потому что оно
Кто могли бы попросить большего?
Думаю, вы могли бы попросить полную реализацию,
1) Нет Нет никакого CGPath
API для этого. Но вы можете посчитать это, чтобы понять это. Взгляните на эту статью в Википедии о кривых Безье , чтобы увидеть, как реализованы кривые в CGPath.
2) Это будет медленным на iPhone, я ожидал, но вы можете заполнить оба пути в буфер с разными цветами (скажем, красный и синий, с альфа = 0,5), а затем итерация через буфер, чтобы найти любые пиксели, которые встречаются на пересечениях. Это будет очень медленно.