次のように、iOS5 アプリ用にいくつかの CGLayer を作成しています。
layer_1 = CGLayerCreateWithContext (context,self.bounds.size, NULL);
offlineContext_1 = CGLayerGetContext (layer_1);
layer_2 = CGLayerCreateWithContext (context,self.bounds.size, NULL);
offlineContext_2 = CGLayerGetContext (layer_2);
layer_3 = CGLayerCreateWithContext (context,self.bounds.size, NULL);
offlineContext_3 = CGLayerGetContext (layer_3);
タイマーの各ステップで、offline_contexts に描画し、すべての描画が完了したら、次のように呼び出してすべてのレイヤーを 1 つに収集します。
CGContextDrawLayerAtPoint (context, CGPointZero, layer_1);
CGContextDrawLayerAtPoint (context, CGPointZero, layer_2);
CGContextDrawLayerAtPoint (context, CGPointZero, layer_3);
これはうまくいきます。レイヤー 1 のコンテンツはレイヤー 2 のコンテンツによって上書きされたように見え、次にレイヤー 3 が最初の 2 つのレイヤーを上書きします。すべての描画は、次のような呼び出しを使用して行われます。
CGContextAddArc(context,cx,cy,radius,-fromDir,toDir,1-curve);
パフォーマンス上の理由から、結果が同じになるように、上記のような繰り返し描画コマンドの多くを画像に置き換えましたが、CGContextAddArc() を 20 回描画する代わりに、画像自体に 20 回描画するように指示します。
[myArcImage drawAtPoint: loc];
ただし、その 1 つの変更で、オーバーレイの順序が変更されたようです。画像は最終的に集合ビューに描画されますが、他のコンテキストに描画された他の線や円弧に重ならない画像の部分のみが描画されます。drawAtPoint バリアントでブレンディングを使用して遊んでみましたが、それは表示されている画像の部分にのみ影響します。
線と円弧が他のレイヤーのコンテンツをオーバーレイするのに、画像がオーバーレイしない理由についてのアイデアはありますか?
どうもありがとう