Основная графика iOS: рисовать ТОЛЬКО тени CGPath

Я рисую простой путь в iOS 5 с помощью Core Graphics:

CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(   path, NULL, center.x   , topMargin   );
CGPathAddLineToPoint(path, NULL, center.x+20, topMargin+50);
CGPathAddLineToPoint(path, NULL, center.x   , topMargin+40);
CGPathAddLineToPoint(path, NULL, center.x-20, topMargin+50);
CGPathAddLineToPoint(path, NULL, center.x   , topMargin   );

Теперь я хочу заполнить его в режиме наложения следующим образом:

[[UIColor colorWithRed:0 green:0 blue:0 alpha:0.4] setFill];
CGContextAddPath(context, path);
CGContextSetBlendMode (context, kCGBlendModeOverlay);
CGContextFillPath(context);

Это дает мне точно ожидаемый результат. Но затем я хочу создать эффект тиснения. Я подумал об использовании белой и черной тени, чтобы добиться этого эффекта следующим образом:

[[UIColor colorWithRed:0 green:0 blue:0 alpha:0] setFill];
CGContextAddPath(context, path);
CGContextSetShadowWithColor(context, CGSizeMake(1, 1), 1.0, highlightColor);
CGContextSetBlendMode (context, kCGBlendModeNormal);
CGContextFillPath(context);

[[UIColor colorWithRed:0 green:0 blue:0 alpha:0] setFill];
CGContextAddPath(context, path);
CGContextSetShadowWithColor(context, CGSizeMake(-1, -1), 1.0, shadowColor);
CGContextSetBlendMode (context, kCGBlendModeNormal);
CGContextFillPath(context);

Проблема в том, что тени не рисуются, когда альфа установлена ​​на 0.
{{1 }} Теперь вопрос: есть ли способ рисовать только тени без цвета заливки, но в полном альфа-канале? Могу ли я каким-то образом предотвратить рисование внутренней части моего пути? Или, возможно, есть более простой способ рисования двух с хадов для одного пути?

20
задан VikingoS says Reinstate Monica 17 November 2011 в 16:34
поделиться