2014-04-15 22 views
0

我正在将一些图形绘制代码从SKShapeNodes重写为CGContext/CALayers。我试图在CGContext中绘制一条曲线。这是我曾经有过在SpriteKit:如何在CGContext中绘制曲线 - 类似SKShapeNode with glowWidth

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

它与暗灰色背景添加到现场后,结果如下:

SpriteKit line glow

是否有可能画线使用CGContext这样的辉光,但不使用CIFilters?通常情况下,我将绘制一个非空白的背景背景,所以我不想在绘制线条后使用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

请让我知道你是否有一些想法。

回答

0

您可以创建一个SKEffectNode,允许您将核心图像过滤器应用于其所有子级。换句话说,你可以创建一个SKEffectNode然后添加一个花精灵作为一个孩子,SKEffectNode将核心图像效果应用到花精灵。请参阅SKEffectNode Class Reference

+1

我想在'CGContext' /'CALayer'中实现辉光。对于某些操作,我更喜欢低级绘图以更好地管理使用的内存。另外,我想只为线条发光,而不是整个图形,这可以通过使用glowWidth属性在'SKShapeNode'中轻松实现,就像我刚才提到的那样。问题是我想避免'SKNode'机制。我想用'CGContext'绘制这种光芒。 – jakubr