有问题的梯度是Quartz 2D Programming Guide 中的图 8-5,“在点和圆之间变化的径向梯度”。
我正在尝试构建一个 CGGradient 对象(不是 CGShading 对象,这可能是问题所在),如下所示:
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGFloat colors[] =
{
0, 0, 0, 0.9,
0, 0, 0, 0
};
CGGradientRef gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*sizeof(CGFloat)));
CGContextClipToRect(context, rect);
CGContextDrawRadialGradient(context, gradient, startCenter, startRadius, endCenter, endRadius, gradientDrawingOptions);
CGGradientRelease(gradient);
CGColorSpaceRelease(rgb);
当然,这并不完全正确——中心点和半径是正确的,但实际的渐变看起来并不相同。我只希望 Apple 提供每个示例的源代码!>:(