2013-10-31 274 views
1

我有一個簡單的繪圖程序,允許用戶在屏幕上繪製兩個封閉的橢圓。我想用漸變填充橢圓,使用內部橢圓來表示漸變的「百分比」。即Th梯度將在外部橢圓到內部橢圓之間平滑過渡。Quartz2d漸變填充橢圓

我有交互式繪圖工作正常,現在我只需要填充漸變。

有什麼想法?文檔只是談論完美的圓形漸變,而不是橢圓。

enter image description here

_mike

回答

5

我不知道是否有可能橢圓形的漸變。但是你可以把圓圈變成橢圓形。這個想法是在變換後的座標系中繪製一個圓。

示例代碼:

Result of running code:

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSaveGState(context); 
    CGContextScaleCTM(context, 1.0, 0.5); 
    CGGradientRef gradient; 
    CGColorSpaceRef colorspace; 
    CGFloat locations[2] = { 0.0, 1.0}; 
    NSArray *colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor blueColor].CGColor]; 
    colorspace = CGColorSpaceCreateDeviceRGB(); 
    gradient = CGGradientCreateWithColors(colorspace, (CFArrayRef)colors, locations); 
    CGPoint startPoint, endPoint; 
    CGFloat startRadius, endRadius; 
    startPoint.x = 180; 
    startPoint.y = 180; 
    endPoint.x = 180; 
    endPoint.y = 180; 
    startRadius = 0; 
    endRadius = 100; 
    CGContextDrawRadialGradient (context, gradient, startPoint, startRadius, endPoint, endRadius, 0); 
    CGContextRestoreGState(context); 
} 

的運行代碼結果