1

有问题的梯度是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 提供每个示例的源代码!>:(

4

1 回答 1

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
};
于 2010-02-02T09:12:03.747 回答