Ответ 1
Многие системы рендеринга получены из модели рисования PostScript. Core Graphics - одна из этих производных систем. (Вот некоторые другие: PDF, SVG, HTML Canvas 2D Контекст, Cairo.)
Все эти системы имеют идею поглаживания пути с линией некоторой фиксированной ширины. Когда вы перемещаете путь, линия пересекает путь: половина ширины линии находится на одной стороне пути, а половина ширины линии находится на другой стороне. Вот диаграмма, которая может сделать это яснее:
Теперь, что происходит, когда вы поглаживаете путь, который лежит вдоль границы вашего взгляда? Половина хода выйдет за пределы вашего обзора и будет отсечена - не нарисована. Вы увидите только половину хода, попадающего в рамки обзора.
Когда вы используете закругленный угол, этот угол отходит от границы вида, к его центру, так что больше штриха вокруг угла попадает внутрь границы вида. Таким образом, кажется, что инсульт становится толще вокруг закругленного угла, например:
Чтобы исправить это, вам нужно вставить свой путь на половину ширины линии, чтобы весь штрих попал в пределы вашего обзора по всему пути. Ширина линии по умолчанию равна 1.0, поэтому:
NSBezierPath* bp = [NSBezierPath bezierPathWithRoundedRect:
NSRectInset(self.bounds, 0.5, 0.5) xRadius:5 yRadius:5];