Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 石英2D绘制不同颜色的PDF页面_Ios_Pdf_Colors_Palette - Fatal编程技术网

Ios 石英2D绘制不同颜色的PDF页面

Ios 石英2D绘制不同颜色的PDF页面,ios,pdf,colors,palette,Ios,Pdf,Colors,Palette,我有一堆PDF,我正在写一个应用程序,用它作为矢量艺术。我正在使用CG上下文命令CGContextDrawPDFPage来绘制PDF,到目前为止,它工作得非常好。我遇到的一个问题是,我希望能够在运行时修改矢量艺术的颜色。所有的PDF目前都绘制为纯黑色,正如它们设计的那样 是否可以绘制PDF,但以某种方式更改绘制时使用的颜色?也许修改调色板使黑色映射到其他颜色,或者在运行时实际更改PDF本身?我意识到PDF文件中已经包含颜色信息,所以也许可以告诉Quartz忽略这些颜色而使用其他颜色 更多信息:

我有一堆PDF,我正在写一个应用程序,用它作为矢量艺术。我正在使用CG上下文命令CGContextDrawPDFPage来绘制PDF,到目前为止,它工作得非常好。我遇到的一个问题是,我希望能够在运行时修改矢量艺术的颜色。所有的PDF目前都绘制为纯黑色,正如它们设计的那样

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

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

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


下面是一个需要用不同颜色绘制的PDF示例:

绘制PDF后,将CGConext的混合模式设置为
kcGBlendModel拧紧
,并用所需的颜色填充上下文,这将为您提供一些开始

如果要对上下文进行任何其他绘制,请确保将混合模式设置为“法线”。或者使用
CGContextSaveGState
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)

绘制PDF后,将CGConext的混合模式设置为
KCGBlendModelRermen
,并用所需的颜色填充上下文,这将为您提供一些开始

如果要对上下文进行任何其他绘制,请确保将混合模式设置为“法线”。或者使用
CGContextSaveGState
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)

有趣的建议!我尝试了这个,但不幸的是,它只是在pdf周围产生了一个红色框。我正在寻找不同的混合模式,以找到一个只会给pdf上色的模式,但还没有找到一个有效的模式。嗯。。。这听起来可能很奇怪,但用白色填充上下文,然后绘制黑白PDF,然后执行上述步骤。你有可以分享的PDF样本吗?哎呀。见你用PDF更新你的Q。我将在am中尝试。我刚刚实现的视图的背景实际上是透明的,这是一个要求。所以我需要的是将黑色映射到X颜色,但保持透明。有趣的建议!我尝试了这个,但不幸的是,它只是在pdf周围产生了一个红色框。我正在寻找不同的混合模式,以找到一个只会给pdf上色的模式,但还没有找到一个有效的模式。嗯。。。这听起来可能很奇怪,但用白色填充上下文,然后绘制黑白PDF,然后执行上述步骤。你有可以分享的PDF样本吗?哎呀。见你用PDF更新你的Q。我将在am中尝试。我刚刚实现的视图的背景实际上是透明的,这是一个要求。所以我需要的是将黑色映射到X颜色,但保持透明。