1

問題の勾配は、Quartz 2D プログラミング ガイドの図 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 に答える