2012-08-15 161 views
0

下面是我想繪製在覈心圖形中的一面旗幟。如何添加陰影,核心圖形

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

我的問題:

如何添加陰影所以我的國旗似乎是摺疊d並在其尾部捲曲(如上面的紅旗)

回答

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);