如何在CGContext中使用glow绘制曲线 - 类似于带有glowWidth的SKShapeNode

时间:2014-04-15 22:38:47

标签: ios7 calayer sprite-kit cgcontext glow

我正在将我的一些图形绘制代码从SKShapeNodes重写为CGContext / CALayers。我试图在CGContext中绘制一条带有发光的曲线。这就是我以前在SpriteKit中所拥有的:

CGPathRef path = …(some path)
SKShapeNode *node = [SKShapeNode node];
node.path = path;
node.glowWidth = 60;

将其添加到深灰色背景的场景后,结果如下:

SpriteKit line glow

是否可以使用CGContext绘制具有此类光晕的线但不使用CIFilter?通常我会画一个非空白的背景背景,所以我不想在绘制线后使用CIFilters。

我已经尝试了“影子”解决方案,但结果远非完美:

UIGraphicsBeginImageContextWithOptions(frame.size, NO, 1);
CGContextRef context = UIGraphicsGetCurrentContext();
    CGFloat glowWidth = 60.0;
CGContextSetShadowWithColor(context, CGSizeMake(0.0, 0.0), glowWidth, [UIColor whiteColor].CGColor);
CGContextBeginPath(context);
CGContextAddPath(context, path);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextStrokePath(context);

结果(阴影几乎不可见):

CGContext line shadow

如果您有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:0)

您可以创建SKEffectNode,以便将Core Image过滤器应用于其所有子项。换句话说,你可以创建一个SKEffectNode然后添加一个花精灵作为孩子,SKEffectNode将核心图像效果应用于花精灵。

有关详细信息,请参阅SKEffectNode Class Reference