2011-07-14 8 views
1

どのように私はObjective Cの(コアグラフィックス)での放射状の勾配でのセクター(満たされた円弧)を描くことができ 私はどのように放射状のグラデーション(iphone)でのセクターを描くことができます

CGContextDrawRadialGradient 

を使用しますが、それが円を描きます。 放射状のグラデーションでどのように形を塗りつぶすかを私に教えてもいいですね。ありがとう

答えて

16

目的のシェイプを定義するパスを現在のコンテキストに追加し、描画する前にコンテキストをクリップします。サンプルコード:

- (void)drawRect:(CGRect)rect 
{ 
    CGPoint c = self.center ; 
    // Drawing code 
    CGContextRef cx = UIGraphicsGetCurrentContext(); 

    CGContextSaveGState(cx); 
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); 

    CGFloat comps[] = {1.0,1.0,0.0,1.0,0.0,1.0,0.0,1.0}; 
    CGFloat locs[] = {0,1}; 
    CGGradientRef g = CGGradientCreateWithColorComponents(space, comps, locs, 2); 


    CGMutablePathRef path = CGPathCreateMutable(); 
    CGPathMoveToPoint(path, NULL, c.x, c.y); 
    CGPathAddLineToPoint(path, NULL, c.x, c.y-100); 
    CGPathAddArcToPoint(path, NULL, c.x+100, c.y-100, c.x+100, c.y, 100); 
    CGPathAddLineToPoint(path, NULL, c.x, c.y); 

    CGContextAddPath(cx, path); 
    CGContextClip(cx); 

    CGContextDrawRadialGradient(cx, g, c, 1.0f, c, 320.0f, 0); 

    CGContextRestoreGState(cx); 
    ... // Do some more drawing may be 
} 
+0

こんにちはVladimar、これは素晴らしい図です。 – NSFeaster

+0

こんにちはVladimar、これは素晴らしい図です。私は似たようなグラデーションを描画するのに役立つが、長方形の中には助けが必要です私は黒の矩形の領域を持っており、UIViewの中心から放射状に灰色の色が必要です。私は本当にあなたの助けに感謝します。 – NSFeaster

+0

@Shukaku、私は分かりませんが、あなたの矩形領域の作業にクリップするだけではありませんか? – Vladimir

関連する問題