如何使用CGContext API绘制笔画轮廓?

时间:2011-07-23 12:02:29

标签: ios core-graphics quartz-graphics cgcontext

我有一个图标图像我想在图像内部绘制1px,彩色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 alpha。

1 个答案:

答案 0 :(得分:0)

StrokePath描边路径,但您没有绘制路径。这就是为什么它什么都没有。

你需要做以下两件事之一:

  1. 矢量化栅格图像并描边该路径。 Core Image的边缘检测滤波器会有所帮助,但即便如此,这也很难。没有内置的API;你必须找到一个可以自己做的或者自己做的图书馆。
  2. 通过用阴影绘制图像来伪造它。请注意,阴影可以是任何颜色;它不一定像阴影。