Как нарисовать контур обводки с помощью CGContext API? - PullRequest
0 голосов
/ 23 июля 2011

У меня есть изображение значка, которое я хотел бы нарисовать 1-пиксельной цветной линией непрозрачности 0,5 вокруг, внутри изображения (аналогично стилю слоя Stroke с позицией: внутри в Photoshop).До сих пор я пробовал это:

UIGraphicsBeginImageContextWithOptions(inCompositeSize, NO, inBaseImage.scale);
            context = UIGraphicsGetCurrentContext();

        CGContextDrawImage(context, frame, image.CGImage);
        CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
        CGContextSetStrokeColorSpace(context, cs);
        CGColorSpaceRelease(cs);
        CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
        CGContextStrokePath(context);
//...

Это, кажется, не имеет никакого эффекта.Я предполагаю, что это потому, что я работаю с изображением, а не путем.Как создать эффект обводки на изображении?

Уточнение: я пытаюсь нарисовать контур только в области непрозрачных значков.Фон значка - 0 букв.

1 Ответ

0 голосов
/ 23 июля 2011

StrokePath обводит путь, и вы не наметили путь.Вот почему это ничего не меняет.

Вам нужно сделать одну из двух вещей:

  1. Векторизовать растровое изображение и обвести этот путь.Фильтр обнаружения края Core Image поможет, но даже в этом случае это сложно.Для этого нет встроенного API;вам нужно найти библиотеку, которая делает это или делает это самостоятельно.
  2. Подделайте ее, рисуя изображение с тенью.Обратите внимание, что тени могут быть любого цвета;это не должно быть похоже на тень.
...