iPhone:创建带有渐变点和透明背景的CGLayer

发布于 2024-11-28 05:07:55 字数 1149 浏览 0 评论 0原文

我想创建一个 CGLayer,包含一个边界具有渐变的点。因为我将使用该图层在主屏幕上绘制多个点。

这是我的代码: CGRect r = CGRectMake(0, 0, 64, 64); textureLayer = CGLayerCreateWithContext(context, r.size, NULL); CGContextRef 纹理上下文 = 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 中的白色背景。我怎样才能使背景透明?

感谢您的帮助。

I would like to create a CGLayer, contains a point with gradient in boundary. Because I will use this layer to draw multiple points on the main screen.

This is my code:
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);

I got this result: enter image description here
It is correct. But when I draw on main screen, not the stroke like I expect, this is the result:enter image description here

I think the problem is the white background in my CGLayer. How I can make that background be transparent?

Thank for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文