2011-02-06 3 views
0

カーブペイント中に変化するアルファチャンネルでベジェ曲線をペイントしたいと思います。今は固定アルファチャンネルでベジェパスを描くことができます。私がしたいのは、パスの最初のn個の点にアルファチャンネルの特定の値を使用し、次のm個の点についてアルファ値などを使用する単一のベジェ曲線を描くことです。私はベジェパスを描画するために使用してい コードは次のとおりです。さまざまなアルファ成分を持つios石英の2次元パスを描く

CGContextSetStrokeColorWithColor(context, curva.color.CGColor); 
.... 
CGContextAddCurveToPoint(context, cp1.x, cp1.y, cp2.x, cp2.y, endPoint.x, endPoint.y); 
.... 
CGContextStrokePath(context); 

は、私が説明してるものを達成する方法はありますか?

多くのおかげで、 ジョヴァンニ

+0

ストロークの色はコンテキスト設定なので、パスを描いている間は変更できません。したがって、各アルファ変更の多くのサブパスでパスを分割して別々にストロークする方が良いです。そう: - アルファ0を設定します。 - ストロークsubpath0; - アルファ1を設定します。ストロークサブパス1; - アルファ2を設定します。ストロークsubpath2; ... – viggio24

答えて

0

私はあなたがこの効果を達成できる想像し、2つの方法があります

  • あなたは絶対に描画時にアルファを計算しなければならない場合は、色付きの作成を試してみることができCGPatternRef(http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGPattern/Reference/reference.html)は描画コールバックが現在のコンテキスト変換を検査し、オフセットに基づいて色を描画します。ストロークカラーを設定する代わりに、作成したパターンにCGContextSetStrokePatternを設定します。

  • 描画オブジェクトに適している場合は、カーブのスペース全体にアルファをあらかじめ計算しておき、CGPathRefをアルファ画像のマスクとして使用できます。

私はCGPatternRef方法を試みたことがありませんことを修飾する必要があるので、私は唯一の可能性ではなく、確信などのことを指摘することができます。

+0

オプション1を続行する方法を理解していますが、オプション2(GCPathRefを画像のマスクとして使用する方法)についてはわかりません。もう少し詳しく解説できますか? – Giovanni

+0

絶対に。 2番目の解決策は、描かれたパスのスペース全体にわたってアルファの色の変化を表現するメモリ内イメージを作成することです。これを行うには、CGBitmapContextCreate()を使用してイメージを作成し、次にCGGradientRefを作成し、ビットマップコンテキストにそのグラデーションを埋め込みます。これをメモリイメージに入れたら、作成したパスをCGContextAddPathでグラフィックスコンテキストに追加し、CGContextClipで次の描画オペレーションをクリップします。CGContextDrawImage –

+0

でメモリイメージをスクリーンに描画するパス上でクリッピングしているので、画像からCGColorインスタンスを作成することで、前述のメモリ内イメージをパスの向こう側に描画することができます。[UIColor colorWithPatternImage: aUIImageObtainedFromTheInMemoryImage] - パスのストロークカラーを返されたUIColorのCGColorに設定し、単にパスを描画します。 –

0

あなたがやろうとしている何をすべきかもっと簡単な方法があります:

  1. お気に入りのグラフィックエディタを使用して勾配画像を作成(またはあなたのアプリで時間内にそれを作成します)。画像は1ピクセルの高さで、ストロークするパスの長さと同じ幅である必要があります。
  2. グラデーションで画像を塗りつぶします。たとえば、左の0から右の1までのさまざまなアルファ成分を持つグラデーションで画像を塗りつぶします。
  3. [UIColor colorWithPatternImage:patternImage]を呼び出して、ストロークカラーを作成します。パターンイメージは、グラデーションイメージから作成されたUIImageです。
  4. パターンの色を使用してパスをストロークさせます。これはレイヤーでも機能します。これにより、パスに沿ったグラデーションが適用されます。
関連する問題