Когда я использую функцию CGContextAddLineToPoint()
, Core Graphics проверяет эту линию на пересечение с прямоугольным слоем или она просто все равно рисует?
Нет, он не будет подавлять lineto
, потому что это только один сегмент в подпути. Подпуть может пересекать прямоугольник, даже если один из его отрезков не проходит. Возможно, вы рисуете только одну линию для каждого подпути, но Кварц не узнает об этом, пока вы не наберете moveto
для нового подпути.
Что касается того, вы должны проверить пересечение линий прямоугольника, документация говорит:
Представления, которые реализуют метод drawRect:
, должны всегда проверять прямоугольник, переданный методу, и использовать его для ограничения области своих операций рисования. Поскольку рисование является относительно дорогой операцией, ограничение рисования таким способом является хорошим способом повышения производительности.
Я думаю, что мы можем разумно истолковать это так, чтобы вы действительно проверяли, пересекают ли линии прямую и пропускают те, которые этого не делают.