iOS-Core-Grafik: Zeichnen Sie NUR die Schatten der CGPath

Ich bin zeichnen einer einfachen Pfad in iOS 5 mit 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   );

Möchte ich nun füllen Sie es in den Overlay-Modus etwa so:

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

Gibt mir genau das erwartete Ergebnis. Aber ich möchte Nächstes erstellen Sie einen Reliefeffekt. Ich dachte, der mit einem weißen und einem schwarzen Schlagschatten zu erreichen, um diesen Effekt so:

[[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);

Das problem ist, die Schatten sind nicht gezeichnet, wenn alpha auf 0 gesetzt ist.

Nun die Frage: gibt es eine Möglichkeit zu zeichnen nur den Schatten, ohne die Füllfarbe aber die volle alpha? Kann ich irgendwie verhindern, dass die Innenseite von meinem Weg aus gezeichnet wird? Oder gibt es vielleicht eine einfachere Art und Weise der Zeichnung zwei Schatten für ein Pfad?

Schreibe einen Kommentar