1
我有一個簡單的繪圖程序,允許用戶在屏幕上繪製兩個封閉的橢圓。我想用漸變填充橢圓,使用內部橢圓來表示漸變的「百分比」。即Th梯度將在外部橢圓到內部橢圓之間平滑過渡。Quartz2d漸變填充橢圓
我有交互式繪圖工作正常,現在我只需要填充漸變。
有什麼想法?文檔只是談論完美的圓形漸變,而不是橢圓。
_mike
我有一個簡單的繪圖程序,允許用戶在屏幕上繪製兩個封閉的橢圓。我想用漸變填充橢圓,使用內部橢圓來表示漸變的「百分比」。即Th梯度將在外部橢圓到內部橢圓之間平滑過渡。Quartz2d漸變填充橢圓
我有交互式繪圖工作正常,現在我只需要填充漸變。
有什麼想法?文檔只是談論完美的圓形漸變,而不是橢圓。
_mike
我不知道是否有可能橢圓形的漸變。但是你可以把圓圈變成橢圓形。這個想法是在變換後的座標系中繪製一個圓。
示例代碼:
:- (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);
}
的運行代碼結果