【问题标题】:CGContextDrawRadialGradient not rendering alpha in PDF?CGContextDrawRadialGradient 不在 PDF 中呈现 alpha?
【发布时间】:2012-02-05 18:42:32
【问题描述】:

我有以下绘图,它在中心呈现一个全彩色的圆,在边缘淡化为 0 alpha。将其绘制到屏幕上时,它看起来很完美。但是,当我在 PDF 上下文 (CGPDFContextCreate) 中绘制相同的东西时,整个圆圈变得不透明。如果我在 PDF 中绘制任何其他常规路径,则 alpha 会呈现罚款。所以只是渐变不起作用。这是一个错误还是我错过了什么?

        CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB();
        size_t num_locations = 2;
        CGFloat locations[2] = { 1.0, 0.0 };

        CGColorRef color = [[UIColor redColor]CGColor];  
        CGFloat *k = (CGFloat *)CGColorGetComponents(color);
        CGFloat components[8] = { k[0], k[1], k[2], 0.0,    k[0], k[1], k[2], 1.0 };

        CGGradientRef myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, num_locations);

        CGPoint c = CGPointMake(160, 160);
        CGContextDrawRadialGradient(pdfContext, myGradient, c, 0, c, 60, 0);

【问题讨论】:

    标签: pdf quartz-graphics radial-gradients


    【解决方案1】:

    Apple 技术支持官方回应:

    Quartz 忽略渐变(或阴影)中颜色的 alpha 值 将渐变(或阴影)捕获到 PDF 文档时,而不是 将所有颜色视为完全不透明。此外, Quartz 在记录时会忽略上下文中的全局 alpha 渐变(或阴影)到 PDF 文档中。一种可能的解决方法 是使用位图上下文将阴影捕获为位并使用 生成的位以创建您通过剪辑绘制的 CGImage 区域。这会产生预渲染的渐变(或阴影),但不会 将 alpha 内容捕获到 PDF 文档中。你不应该执行 不包含的渐变(或阴影)的预渲染 阿尔法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2021-10-31
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      相关资源
      最近更新 更多