【问题标题】:Apply a shadow at both sides of a UIBezierPath在 UIBezierPath 的两侧应用阴影
【发布时间】:2012-11-30 13:45:53
【问题描述】:

我目前正在屏幕上绘图。我得到流畅的线条,我可以改变我的图画的颜色。但我找不到如何对该线应用阴影。

要绘制它,我使用:

[path strokeWithBlendMode:[path blendMode] alpha:1.0];

我看到我可以使用CGContextSetShadowWithColor(),但尽管如此,我不确定如何使用它,因为这是strokeWithBlendMode 的CGPath 参考中所说的:

此方法自动保存当前图形状态之前 绘制并在完成后恢复该状态,因此您不必 自己保存图形状态。

所以我真的不知道把 CGContextSetShadowWithColor() 或其他任何东西放在哪里,如果我可以使用它的话。

问候

【问题讨论】:

    标签: ios drawing core-graphics uibezierpath


    【解决方案1】:

    如果您想使用CGContextSetShadowwithColor(),那么您需要更改将贝塞尔路径绘制到视图的方式,以便将CGPath 表示绘制到CGContext。下面是一个例子:

    UIBezierPath *path;     // this is your path as before
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextAddPath(context, path.CGPath);
    CGContextSetLineWidth(context, 2.0);
    CGContextSetBlendMode(context, path.blendMode);
    CGContextSetShadowWithColor(context, CGSizeMake(1.0, 1.0), 2.0, [UIColor blackColor].CGColor);
    CGContextStrokePath(context);
    

    您可以这样做的另一种方法是创建一个新的CAShapeLayer 并通过将其设置为路径属性来绘制您的路径。这将很容易让您添加一个只会影响您的路径的阴影。

    【讨论】:

    • 谢谢,我会试试这个!
    • 它有效,但仅在线路的一侧。我想在它的两边都应用,以对整条线应用模糊效果。
    • 设置shadowOffset为CGSizeZero并调整模糊值,直到找到你喜欢的效果。
    • 使用这个作品。但它变得太迟钝(iPhone 6s)。我在drawRect中设置所有这些。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多