我有一张前景为黄色花瓶,背景透明的图片:
我把它画在CGContext上:
CGContextDrawImage(context, CGRectMake(0, 0, 100, 100), myImage.CGImage);
通过在CGContextDrawImage
之前使用以下语句,我可以在它周围画一个阴影
CGContextSetShadowWithColor(context, CGSizeMake(0,0), 5, [UIColor blueColor].CGColor);
但我想在图像周围画一笔,这样它看起来就像下面这样:
如果我这样做:
CGContextSetRGBStrokeColor(shadowContext, 0.0f, 0.0f, 1.0f, 1.0f);
CGContextSetLineWidth(shadowContext, 5);
CGContextStrokeRect(shadowContext, CGRectMake(0, 0, 100, 100));
它(显然)在整个图像周围绘制了一个矩形边框,如下所示:
这不是我想要的。
但是,在第三张图片中绘制边框的最佳方法是什么?
请注意,在这种情况下不可能使用UIImageView,因此使用UIImageView的CALayer属性是不适用的。
发布于 2013-02-22 03:46:15
为此,一种方法是使用mathematical morphology operator of dilation向外“增长”图像的alpha通道,然后使用生成的灰度图像作为遮罩来模拟笔划。通过填充放大的蒙版,然后在顶部绘制主图像,您将获得笔划的效果。我已经创建了一个演示来展示这个效果,可以在Github上找到:https://github.com/warrenm/Morphology (所有源代码都是麻省理工学院许可的,如果它对你有用的话)。
这是它实际运行的屏幕截图:
请注意,这是惊人的缓慢(膨胀需要在每个像素上迭代内核),因此您应该选择笔划宽度并预先为每个源图像预先计算蒙版图像。
发布于 2013-02-21 03:06:56
我会尝试在调用CGContextDrawImage
之前设置笔触颜色和线条宽度,或者调整阴影(不透明、模糊等),使其看起来像是图像周围的笔画。让我知道这是否有效!
https://stackoverflow.com/questions/14902444
复制相似问题