有问题的渐变是来自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提供每个示例的源代码! >:(
答案 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
};