Толщина закругленных углов CoreGraphics

Всякий раз, когда я обводил путь с закругленными углами на iPhone, закругленные углы толще, чем остальная часть обведенного пути. Смотрите здесь, что я имею в виду:

http://img181.imageshack.us/img181/6372/screenshot20100320at123.png

Не уверен, почему это происходит, есть идеи?


person indragie    schedule 20.03.2010    source источник


Ответы (3)


Я согласен с анализом Питера Хози, что внешняя половина ваших линий обрезается, но я бы рекомендовал вместо этого переместить все координаты на 0,5 пикселя внутрь. Таким образом, ваши прямые линии будут более четкими (без сглаживания на 2 пикселя экрана).

person Kevin Reid    schedule 20.03.2010
comment
Перемещение на полпикселя, похоже, решило проблему, спасибо. - person indragie; 21.03.2010

Я подозреваю, что вы рисуете внутри прямоугольного контура отсечения; углы полностью попадают в прямоугольник, но стороны разрезаются пополам: половина внутри контура отсечения и так нарисована, половина снаружи и таким образом обрезается.

Попробуйте добавить путь к пути отсечения, прежде чем обводить его.

Для этого вам нужно дважды добавить CGPath к текущему пути контекста:

  1. Добавьте CGPath к текущему пути.
  2. Добавить текущий путь к пути отсечения (тем самым очистив текущий путь).
  3. Добавьте CGPath к текущему пути.
  4. Обведите текущий путь.
person Peter Hosey    schedule 20.03.2010

Просто выглядит толще. Если вы увеличите его, вы увидите, что пара дополнительных пикселей черного цвета на самом деле является несколькими пикселями серого цвета, вызванными сглаживанием.

Попробуйте отключить сглаживание, чтобы увидеть, выглядит ли результат лучше.

Редактировать: также в правом нижнем углу, кажется, есть эффект тени.

person Brandon Bodnar    schedule 20.03.2010
comment
Вы правы, этот эффект создают серые пиксели. Пробовал отключать сглаживание, но результат хуже, отсутствуют некоторые части линии обводки. Любой другой способ исправить это? - person indragie; 20.03.2010
comment
Прости. Не с головы. Надеюсь, кто-то еще может прийти и предложить другой способ. - person Brandon Bodnar; 20.03.2010