Как уже заметил Райан Захри, сглаживание поможет вам здесь. Эффект, который вы здесь испытываете, - это эффект «лестницы».
Пиксели квадратные, поэтому можно легко рисовать прямые линии (по горизонтали или по вертикали), не создавая артефактов. Если вы рисуете линии под углом, вам нужно растеризовать вашу линию. Алгоритм рисования линий должен составлять аппроксимации при попытке сопоставить вашу линию с пикселями. Примером такого алгоритма является * * по Брезенхэму (очень популярный и простой в реализации, но не имеющий сглаживания).
Вот что он делает:
Как вы можете видеть очень ясно на этой картинке, рисование линии под любым углом приводит к так называемому эффекту лестницы. Чтобы избежать этого эффекта вы можете использовать сглаживание. Сглаживание на самом деле является частью теории сигналов. Это метод минимизации артефактов искажения, известных как псевдонимы, при представлении сигнала высокого разрешения с более низким разрешением. Как видно из приведенного выше примера строки, это очень хорошо применимо к компьютерной графике.
Сглаживание действительно сложно, но идея состоит в том, чтобы улучшить изображение путем аппроксимации линии не только на основе пикселей, но и с помощью интеллектуальной раскраски, чтобы линия появилась в определенном месте, не являющемся пикселем. точно.
Чтобы включить встроенное сглаживание в Core Graphics, перед выполнением поворота выполните следующие действия:
CGContextSetAllowsAntialiasing(theContext, true);
CGContextSetShouldAntialias(theContext, true);
Обратите внимание, что сглаживание может быть очень дорогим с точки зрения вычислительной мощности, его следует использовать только при необходимости.