如何添加阴影,核心图形

时间:2012-08-15 20:09:45

标签: ios core-graphics

下面是我想用核心图形绘制的标志。

enter image description here

我的工作是:

Flag.m
- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 1.0);

    CGContextMoveToPoint    (context, 20, 10);
    CGContextAddLineToPoint (context, 50, 10);
    CGContextAddLineToPoint (context, 50, 90);
    CGContextAddLineToPoint (context, 45, 90);
    CGContextAddLineToPoint (context, 45, 95);
    CGContextAddLineToPoint (context, 40, 92);
    CGContextAddLineToPoint (context, 35, 90);
    CGContextAddLineToPoint (context, 30, 92);  
    CGContextAddLineToPoint (context, 25, 95);
    CGContextAddLineToPoint (context, 25, 90); 
    CGContextAddLineToPoint (context, 20, 90);  
    CGContextAddLineToPoint (context, 20, 10);    

    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextFillPath(context);

}

我最终得到的是

enter image description here

我的问题:

如何添加阴影以使我的旗帜在其尾部折叠并卷曲(如上面的红旗)

1 个答案:

答案 0 :(得分:1)

这是一个相对简化的版本。我评论了一些要点,分为两部分。首先绘制尾部。然后,上面画出主色带。可以使用[UIColor colorWithWhite:0.0 alpha:0.4]

绘制漂亮的阴影效果

如果你想获得更多点,你可以将主区域的底部几个点绘制为另一个带渐变的矩形。确保在绘制最后一个矩形之前关闭阴影。

/*CGContextMoveToPoint    (context, 20, 10);
CGContextAddLineToPoint (context, 50, 10);*/
CGContextMoveToPoint    (context, 48, 85);
CGContextAddLineToPoint (context, 48, 90);
CGContextAddLineToPoint (context, 45, 90);
CGContextAddLineToPoint (context, 45, 95);
CGContextAddLineToPoint (context, 40, 92);
CGContextAddLineToPoint (context, 35, 90);
CGContextAddLineToPoint (context, 30, 92);
CGContextAddLineToPoint (context, 25, 95);
CGContextAddLineToPoint (context, 25, 90);
CGContextAddLineToPoint (context, 22, 90);
CGContextAddLineToPoint (context, 22, 85);
//CGContextAddLineToPoint (context, 20, 10);
CGContextSetShadowWithColor(context, CGSizeMake(0, 5.), 3., [UIColor colorWithWhite:0 alpha:.4].CGColor);
CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:.95 alpha:1].CGColor);
CGContextFillPath(context);
CGContextSetShadowWithColor(context, CGSizeMake(0, 2.), 1.5, [UIColor colorWithWhite:0 alpha:.3].CGColor);
CGContextMoveToPoint    (context, 20, 88);
CGContextAddLineToPoint (context, 20, 10);
CGContextAddLineToPoint (context, 50, 10);
CGContextAddLineToPoint (context, 50, 88);
CGContextFillPath(context);