Quartz 2D绘制不同颜色的PDF页面

时间:2012-07-10 02:53:45

标签: ios pdf colors palette

我有一堆PDF正在我正在编写的应用程序中用作矢量艺术。我正在使用CG Context命令CGContextDrawPDFPage来绘制PDF,到目前为止它工作得很好。我遇到的一个问题是我希望能够在运行时修改矢量图的颜色。所有的PDF目前都是以黑色为基础绘制的。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

绘制PDF后,将CGConext的混合模式设置为kCGBlendModeLighten,并使用您想要的颜色填充上下文,这应该为您提供一些开始。

如果要对上下文执行任何其他绘制,请确保将混合模式设置为正常。或者使用CGContextSaveGStateCGContextRestoreGState保存和恢复上下文状态。

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

我不确定这是否是您想要的,所以如果不是,您可以详细说明,也许分享您正在使用的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)