【问题标题】:How to draw a stroke outline using CGContext API?如何使用 CGContext API 绘制笔画轮廓?
【发布时间】:2011-07-23 12:02:29
【问题描述】:

我有一个图标图像,我想在图像内部绘制一条 1 像素、颜色为 0.5 的不透明度线(类似于 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。

【问题讨论】:

    标签: ios core-graphics quartz-graphics cgcontext


    【解决方案1】:

    StrokePath 画了一条路径,而你还没有绘制路径。这就是为什么它什么都没有。

    你需要做两件事之一:

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

    【讨论】:

    • 对,我尝试了#2,但显然它没有在形状内部绘制。但它可能是最接近的。
    • @Plenilune:在图像内部/上​​方获取阴影的方法是从图像制作一个反向蒙版图像,剪辑到该蒙版,然后用阴影填充任何纯色。 developer.apple.com/library/mac/documentation/GraphicsImaging/…要制作蒙版,创建一个CGBitmapContext,将图像绘制到其中,将混合模式设置为Source In,填充黑色,将混合模式设置为Destination Atop,并填充白色。
    • 澄清:“任何纯色”都应该是背景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2021-09-07
    • 2018-07-09
    • 2021-04-14
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多