Как нарисовать кривую с жаром в CGContext - что-то вроде SKShapeNode с glowWidth

Я переписываю некоторые из моих графических кодов рисования из SKShapeNodes в CGContext/CALayers. Я пытаюсь нарисовать кривую с жаром в CGContext. Вот что я имел в SpriteKit:

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

После добавления его в сцену с темно-серым фоном, результат был следующим:

SpriteKit линия свечения

Можно ли нарисовать линию с таким свечением, используя CGContext, но без использования CIFilters? Обычно я буду рисовать на непустом фоне контекста, поэтому я предпочитаю не использовать фильтры CIF после прорисовки линии.

Я уже пробовал "теневое" решение, но результаты далеки от идеальных:

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

Пожалуйста, дайте мне знать, если у вас есть идеи.

1 ответ

Вы можете создать SKEffectNode который позволяет применять фильтры Core Image ко всем его дочерним элементам. Другими словами, вы можете создать SKEffectNode затем добавить цветок спрайт, как ребенок, и SKEffectNode применил бы эффект Core Image к цветочному спрайту.

Для получения более подробной информации, пожалуйста, смотрите ссылку на класс SKEffectNode.

Другие вопросы по тегам