1

境界にグラデーションのあるポイントを含む CGLayer を作成したいと思います。このレイヤーを使用して、メイン画面に複数のポイントを描画するためです。

これは私のコードです: CGRect r = CGRectMake(0, 0, 64, 64); textureLayer = CGLayerCreateWithContext(context, r.size, NULL); CGContextRef textureContext = CGLayerGetContext(textureLayer);

CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
CGFloat colors[] =
{
    0.0, 0.0, 0.0, 1.0,
    1.0, 1.0, 1.0, 1.0 
};
gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
CGColorSpaceRelease(rgb);

CGPoint start, end;
start = end = CGPointMake(32, 32);
CGFloat startRadius = 20;
CGFloat endRadius = 30;
CGContextSaveGState(textureContext);
CGGradientDrawingOptions options = 0 | kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation;
CGContextDrawRadialGradient(textureContext, gradient, start, startRadius, end, endRadius, options);
CGContextRestoreGState(textureContext);

私はこの結果を得ました:ここに画像の説明を入力 それは正しいです。しかし、私が期待したようなストロークではなく、メイン画面に描画すると、これが結果です:ここに画像の説明を入力

問題は CGLayer の白い背景だと思います。その背景を透明にするにはどうすればよいですか?

お手伝いありがとうございます。

4

0 に答える 0