Как нарисовать кривые Безье с Кварцем с качеством, эквивалентным реализации по умолчанию?

Я рисую кривые Безье с моим собственным кодом. По сути, я вычисляю большое количество точек, к которым присоединяюсь с помощью CGPath. Но даже при той же ширине линии я не могу добиться того же качества, что и реализация по умолчанию. Край мазка немного размыт из-за сглаживания. Обводка выглядит неплохо, но я заметил, что при рендеринге Apple сглаживание выглядит иначе; ширина зоны сглаживания (где пиксели не имеют ни цвета обводки, ни цвета фона) меньше.

Немного слежения за инструментами показывает, что ход UIBezierPath тратит некоторое время на libRIP, но я не могу найти, что именно.

2 ответа

Если вы рисуете большое количество точек, у вас могут быть более темные края сглаживания, потому что вы перерисовываете. Я не могу найти хорошее изображение в Интернете, чтобы описать его, но если вы построите график от A -> B, а затем снова от A -> B, обе линии могут сгенерировать, скажем, 30% серых частичных пикселей, которые затем будут смешаны вместе, что приведет к в 60% серого.

Вы можете не думать, что делаете это, но если у вас высокая плотность точек, то у вас могут получиться перекрывающиеся компоненты (особенно если вы строите отдельные сегменты линий, у вас будет перекрытие и т. Д.).

Вероятно, стоит опубликовать пример кода и снимки экрана, сделанные с помощью Pixie или xScope, чтобы мы могли видеть, что происходит.

Я сам нарисовал эллипс, используя грех и операции cos. Мой эллипс выглядит так же хорошо, как и оригинал.

Я знаю, что при рисовании градиента возникает проблема. Так ли это в вашем случае?

Другие вопросы по тегам