如何在iPhone上绘制这个精确的渐变?

时间:2010-02-02 08:17:01

标签: iphone core-graphics gradient

有问题的渐变是来自Quartz 2D Programming Guide的Figure 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提供每个示例的源代码! >:(

1 个答案:

答案 0 :(得分:1)

更新:这些颜色值会在其他内容的基础上添加阴影(从一个点向外绘制一个圆圈):

CGFloat colors[] =
{
    0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 0.75f
};

使用这些颜色值非常接近(从一个点到圆圈绘制):

CGFloat colors[] =
{
    0.0f, 1.0f, 1.0f, 1.0f,
    0.0f, 0.0f, 0.0f, 0.75f
};