【问题标题】:CGContextSetShadow - how to apply to 'compound' shape?CGContextSetShadow - 如何应用于“复合”形状?
【发布时间】: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 通道作为阴影的基础),如下所示:



知道如何实现这种效果吗? (请注意,我不能使用 UIViewlayer.shadow 属性,因为此行是为响应触摸拖动事件而呈现的,并且该方法性能不够好)。

【问题讨论】:

    标签: ios drawing core-graphics line cgcontext


    【解决方案1】:

    这正是Transparency Layers 的用途。

    我想你会发现这些例子看起来很眼熟。

    【讨论】:

    • 太棒了,正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    相关资源
    最近更新 更多