特定の色で画像を描画しようとしています。この効果を得るには、最初に画像(主に白と黒で構成されています)を描画し、指定した色で矩形を描きます(赤と言えば)。さまざまな合成オプションがありますが、まさに私が望むものはありません。Quartzで合成するときに色を掛ける
色とアルファ値を掛け合わせたいです。私はこれが他のグラフィックスシステムでは「変調」操作と呼ばれることもあると思います。したがって、イメージ内の白の値には、オーバーレイの矩形の赤の値が乗算され、赤が生成されます。画像の黒の値は、黒とプロダクトブラックを掛け合わせます。
つまり、R = S * D(結果は送信元に送信先を掛けたものに等しい)。
これは私が今で働いているコードです:
[image drawInRect:[self bounds] fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1];
NSColor * blend = [NSColor colorWithCalibratedRed:1 green:0 blue:0 alpha:1.0];
[blend setFill];
NSRectFillUsingOperation(self.bounds, NSCompositePlusDarker);
NSCompositePlusDarkerは、私が欲しいものではありませんが、それは近いです。 (乗算ではなく加算です)。
Quartzでこれを行う方法はありますか?例えば、OpenGLでは非常に簡単です。私はCIFilterを見てきましたが、これは少し面倒です。しかしそれが唯一の方法であれば、私は正しい方向に私を得るためのサンプルコードを感謝します。
Peterの回答は正しいですが、Core Imageは実際には非常に簡単なAPIであり、**は非常に高速です。それを怖がらないでください。 –
+1 @Rob。フィルターを作る/取得する。準備する。それに入力画像を与えます。出力イメージを取得します。要するにCore Imageです。 –