【发布时间】:2014-03-18 03:56:34
【问题描述】:
我正在使用 CoreGraphics 使用以下代码绘制一条带有圆形端点和阴影的线:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShadowWithColor(UIGraphicsGetCurrentContext(), CGSizeMake(0, 0), 4.0, [UIColor blackColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextFillEllipseInRect(context, CGRectMake(_startPoint.x - 5, _startPoint.y - 5, 10, 10));
CGContextFillEllipseInRect(context, CGRectMake(_endPoint.x - 5, _endPoint.y - 5, 10, 10));
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(context, 3.0);
CGContextMoveToPoint(context, _startPoint.x, _startPoint.y);
CGContextAddLineToPoint(context, _endPoint.x, _endPoint.y);
CGContextDrawPath(context, kCGPathStroke);
但是,这会导致如下结果:
阴影分别应用于线条和圆圈。相反,我想要的是将阴影应用于由所有三个创建的“复合”形状(即仅使用复合 Alpha 通道作为阴影的基础),如下所示:
知道如何实现这种效果吗? (请注意,我不能使用 UIView 的 layer.shadow 属性,因为此行是为响应触摸拖动事件而呈现的,并且该方法性能不够好)。
【问题讨论】:
标签: ios drawing core-graphics line cgcontext