1

我有一堆 PDF,在我正在编写的应用程序中用作矢量图。我正在使用 CG Context 命令 CGContextDrawPDFPage 来绘制 PDF,到目前为止效果很好。我遇到的一个问题是我希望能够在运行时修改矢量图的颜色。目前所有的 PDF 都按照设计的方式绘制为纯黑色。

是否可以绘制 PDF 但以某种方式更改它绘制的颜色?也许修改调色板以便黑色映射到其他东西,或者在运行时实际更改 PDF 本身?我意识到 PDF 文件中已经包含颜色信息,所以也许可以告诉 Quartz 忽略这些颜色并使用其他颜色?

更多信息:我正在绘制的 PDF 是程序需要绘制的各种图标/形状。它们是一些黑色的形状,带有透明的背景。我需要能够绘制该 PDF 但使用不同的颜色,或者像比尔威尔逊提到的那样使用混合模式覆盖不同的颜色。我试过 kCGBlendModeLighten 但问题是如果我在 pdf 周围填充一个矩形,外部透明区域会变成红色,所以只有一个红色框而不是红色形状。

所以我需要一种将黑色映射到颜色 X 但保持透明的方法。

这是我需要以不同颜色绘制的 PDF 示例:http: //davidevansgames.com/res/FON179.pdf

4

1 回答 1

1

绘制 PDF 后,将 CGConext 的混合模式设置为kCGBlendModeLighten并用您想要的颜色填充上下文,这应该会给您一些帮助。

如果您正在对上下文进行任何其他绘图,请确保将混合模式设置为正常。CGContextSaveGState或者使用and保存和恢复上下文状态CGContextRestoreGState

尝试其他混合模式,看看哪种最适合您...

我不确定这是否是您想要的,所以如果不是,您可以详细说明,也许分享您正在使用的 pdf。

 CGContextSaveGState(context);
 CGContextSetBlendMode(context, kCGBlendModeLighten);
 CGColorRef redColor = [UIColor colorWithRed:1.0 green:0.0 
                                         blue:0.0 alpha:1.0].CGColor;

 CGContextSetFillColorWithColor(context, redColor);
 CGContextFillRect(context, CGRectMake(0, 0, width, height));
 CGContextRestoreGState(context)
于 2012-07-10T03:51:04.100 回答