2011-12-23 6 views
1

私は非常に特殊な方法でいくつかの画像を構築する必要があるiPhoneアプリケーションを構築しています。問題は非常に説明が難しいので、以下では私が達成しようとしていることの図を示します。基本的には、UIImage(PNGになる)に「バケツ塗り」の塗りつぶしをしたいのです。私はここで "ペイントバケツ"という言葉は色合いと同じであると思いますか?「ペイントバケット」からマスクされた領域をUIImageで塗りつぶす

その後、マスクオブジェクト(更新可能であり、複数のシェイプで構成されている可能性があります)を作成してから、元のイメージに別の色合い/ペイントバケットを適用すると、ビルドアップマスク影響を受けません。基本的には、オブジェクトの周りにいくつかのテープをラップし、ペイントしてからテープを取り除くのと同じです。約束どおり、ここに私が何をしているのかの図があります。私はここで十字を使用していますが、最終的にはパターンがかなり複雑で、PNGの内部になければならず、コードで作成されないことに注意することが重要です。助けてくれてありがとう!

Masking Flow

答えて

0

白地に黒画像として(またはあなたが好きな形)あなたのクロスを作成します。 CGContextClipToMaskを使用してグラフィックスコンテキストに適用します。次に、CGContextFillRectを使用して、コンテキストの境界線を青で塗りつぶします。このようなものがあります:

CGRect bounds = your context bounds; 
CGContextRef gc = your context; 
UIImage *cross = [UIImage imageNamed:@"cross"]; 
CGContextSaveGState(gc); { 
    CGContextClipToMask(gc, bounds, cross.CGImage); 
    CGContextSetColorWithColor(gc, [UIColor blueColor].CGColor); 
    CGContextFillRect(gc, bounds); 
} CGContextRestoreGState(gc); 
+0

お返事ありがとうございます。申し訳ありませんが、私はこれらのCステートメントを使っているかなり初心者です(遅れて、古い古い 'アプリ'を作成してしまいました!)。実際にこれを画面に表示させる次のステップは何ですか?また、この方法を使用すると、複数のマスクを追加することもできます(多分十字、円など)?さらに、CGContextSetColorWithColor(gc、[UIColor blueColor] .CGColor);という行が表示されます。 ( "ld:アーキテクチャi386。clang:error:リンカーコマンドが終了コード1で失敗しました")。私はそれを "CGContextSetRGBFillColor"に置き換えましたが、何も表示されません。 – NonatomicRetain

+0

SOの質問には多すぎる質問があります。 –

+0

また、Quartz(Core Graphics)のチュートリアルや2つの作業が必要なようです。 http://stackoverflow.com/questions/3463256/what-are-some-great-quartz-2d-drawing-tutorials –

関連する問題