Пересечение CGPathRef

Убедитесь, что вы ссылаетесь на актив изображения , который действительно существует . Я добавил свои файлы в каталог активов XCode (.xcassets), как обычно, но забыл переименовать имя по умолчанию «Image» в имя, которое я использовал в раскадровке.

9
задан 20 June 2009 в 15:03
поделиться

2 ответа

Сделайте один контур обтравочным контуром, нарисуйте другой контур, затем найдите пиксели, которые пережили процесс отсечения:

// 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. проще
  2. использует четверть памяти, поскольку достаточно 8-битного контекста шкалы серого
  3. устраняет необходимость в сложном и трудном для отладки коде прозрачности

Кто могли бы попросить большего?

Думаю, вы могли бы попросить полную реализацию,

3
ответ дан 5 December 2019 в 02:08
поделиться

1) Нет Нет никакого CGPath API для этого. Но вы можете посчитать это, чтобы понять это. Взгляните на эту статью в Википедии о кривых Безье , чтобы увидеть, как реализованы кривые в CGPath.

2) Это будет медленным на iPhone, я ожидал, но вы можете заполнить оба пути в буфер с разными цветами (скажем, красный и синий, с альфа = 0,5), а затем итерация через буфер, чтобы найти любые пиксели, которые встречаются на пересечениях. Это будет очень медленно.

0
ответ дан 5 December 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: