【问题标题】:Drawing a line with a shadow, but only want to keep shadow. IOS画一条带阴影的线,但只想保留阴影。 IOS
【发布时间】:2011-09-08 20:50:37
【问题描述】:

我想画一条带阴影的线,但我不想保留这条线,只保留阴影。

我试图将线条的笔触颜色设置为清除,但是当我这样做时,阴影也消失了。

下面的代码创建了 2 行,我只想保留阴影,因为它看起来更好,并且不像线条那样像素化。

这可能吗?

    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0);

    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.0, 0.0, 1.0);
    CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);    

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGFloat components[4] = {0.0, 0.0, 0.0, 1.0};
    CGColorRef shadowColor = CGColorCreate(colorSpace, components);
    CGContextSetShadowWithColor(UIGraphicsGetCurrentContext(), CGSizeMake(10,10), 4.0, shadowColor);

谢谢。

【问题讨论】:

    标签: iphone ios core-graphics quartz-2d


    【解决方案1】:

    所以你不能直接这样做,因为阴影反射路径,所以如果你让路径透明,阴影也将是透明的。我能想到一些解决方法(具体取决于你在做什么),但一种偷偷摸摸的方法就是将阴影画在路径下方足够远的地方,你可以在它上面画,基本上擦除它。例如,如果背景是白色的,这将完成你想要的:

    - (void)drawRect:(CGRect)rect
    {
        CGContextRef context = UIGraphicsGetCurrentContext();
    
        CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
        CGContextSetLineWidth(context, 10.0);
        CGContextMoveToPoint(context, 10.0, 30.0);
        CGContextAddLineToPoint(context, 310.0, 30.0);
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        CGFloat components[4] = {0.0, 0.0, 0.0, 1.0};
        CGColorRef shadowColor = CGColorCreate(colorSpace, components);
        CGContextSetShadowWithColor(context, CGSizeMake(0.0f,20.0f), 4.0, shadowColor);
        CGContextStrokePath(context);
    
        CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
        CGContextSetLineWidth(context, 10.0);
        CGContextMoveToPoint(context, 10.0, 30.0);
        CGContextAddLineToPoint(context, 310.0, 30.0);
        CGContextStrokePath(context);
    }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      你为什么不把你的线画成阴影。不要绘制阴影,而是用 0.25 或更少的 alpha 绘制一条黑线,并将其偏移到您期望阴影所在的位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-20
        • 1970-01-01
        • 1970-01-01
        • 2020-09-26
        • 1970-01-01
        相关资源
        最近更新 更多