0

この質問を参照してください:OpenGL ES塗りつぶし効果 同じことをしようとしていますが、カスタムUIViewがあります。これには、異なるCGMutuablePathが含まれており、選択したUIViewで描画のみが有効になっています。

私はGLPaint、PaintingViewクラスを使用し、それをカスタムクラスとして使用して、さまざまなパスを描画しました。すべてが正常に機能しています。私もそれらのパスを埋める必要があることを除いて。ユーザーがバケットペイント効果を使用したい場合。定義済みのCGクローズドパスを使用しているので、EAGLContextを使用してそれらのパスを埋めることは可能ですか。私はそれをCGContextRefで埋めるために多くの方法を試みましたが、それは常に「無効なコンテキスト」で終わります。単一のビューで2つの異なるコンテキストを使用することは不可能だと思います。

誰かがこの問題で私を助けることができますか?EAGLContextを使用してパスを埋めるにはどうすればよいですか?

4

1 に答える 1

0

コード/アプリの実際の例がないと、ここで問題を把握するのは少し難しいです。ただし、ストローク パスを塗りつぶそうとしているようです。

まず、ここで 2 つのコンテキストを提案している理由がわかりません。CGMutablePathsを使用して描画していますが、 ?CGContextを使用して塗りつぶそうとしています。EAGLContextこれは、問題に対する非常に大げさな解決策です。EAGLContextOpenGL ES (通常は 3D のもの) で、CGContextQuartz 2D です。特別な理由がない限り、適切に適用せずに両方のコンテキストを 1 つのビューに混在させることはお勧めしません。

道を埋めるためにあらゆることを試したと言うのですか?CGContextEOFillPathこれは、すでに試したことがあることを意味しますCGContextFillPathか?とにかく、これは以下で動作するはずCGMutablePathsです:

// Draw your CGMutablePath

CGContextAddPath(yourcgcontext, yourcgmpath); //Adds a previously created Quartz path. 
CGContextClosePath(yourcgcontext); //Closes and terminates the current path’s subpath.
CGContextClip(yourcgcontext); Modifies the current clipping path.

// Fill a solid or a gradient or an image, that should be clipped to your path.
于 2013-02-10T21:15:48.740 に答える