書いているアプリのベクターアートとして使用しているPDFがたくさんあります。CGコンテキストコマンドCGContextDrawPDFPageを使用してPDFを描画していますが、これまでのところうまく機能しています。私が遭遇した問題は、実行時にベクターアートの色を変更できるようにしたいということです。現在、すべてのPDFは、設計どおりに黒一色で描画されています。
PDFを描くことは可能ですが、どういうわけかそれが描かれる色を変更しますか?たぶん、カラーパレットを変更して、黒が他の何かにマップされるようにしますか、それとも実行時にPDF自体を実際に変更しますか?PDFにはすでにファイルに色情報が含まれていることに気付いたので、Quartzにそれらの色を無視して他のものを使用するように指示することは可能でしょうか?
詳細:私が描いているPDFは、プログラムが描く必要のあるさまざまなアイコン/図形です。それらは透明な背景を持ついくつかの黒い形です。そのPDFを別の色で描画できるようにする必要があります。または、Bill Wilsonが述べたように、ブレンドモードを使用して別の色をオーバーレイする必要があります。kCGBlendModeLightenを試しましたが、問題は、PDFの周囲の長方形を塗りつぶすと、外側の透明な領域が赤になるため、赤い形ではなく赤いボックスだけが表示されることです。
したがって、黒を色Xにマッピングする方法が必要ですが、透明のままにしておきます。
これは私が異なる色で描く必要があるPDFの例です:http://davidevansgames.com/res/FON179.pdf