6

これをストロークにして描けるようになりたいです。これをできるだけ効率的に行うにはどうすればよいでしょうか。その場で描画するには、CGPatternRef を考えていましたが、その方法が本当にわかりません。

編集: パスにワープする必要はありません。Illustratorでその問題を修正できませんでした。 代替テキスト

4

4 に答える 4

4

Apple doc は役に立ちますか?

Quartz 2D Programming Guide、 How Patterns Work、または Patterns in generalのセクションを参照してください。

(上記のドキュメントから) 開始点を描画する方法は次のとおりです。PSIZE は星のサイズです。

static void MyDrawStencilStar (void *info, CGContextRef myContext)
{
    int k;
    double r, theta;

    r = 0.8 * PSIZE / 2;
    theta = 2 * M_PI * (2.0 / 5.0); // 144 degrees

    CGContextTranslateCTM (myContext, PSIZE/2, PSIZE/2);

    CGContextMoveToPoint(myContext, 0, r);
    for (k = 1; k < 5; k++) {
        CGContextAddLineToPoint (myContext,
                    r * sin(k * theta),
                    r * cos(k * theta));
    }
    CGContextClosePath(myContext);
    CGContextFillPath(myContext);
}

曲線変換を追加して、各ポイントで星を描くだけです。

以下は、3 次ベジエ曲線上の点を計算する単純な C コードです。

于 2010-03-15T06:31:52.867 に答える
2

Illustratorドキュメントをこのアプリケーションにインポートしてみてください:Opacity、そして「ソースコードとしてエクスポート」を実行します。

詳細については、http://likethought.com/opacity/workflow/を参照してください。

于 2010-03-09T03:31:20.273 に答える
2

パスを歩き、等距離で (パスに沿って) 曲線の座標を計算する必要があります。これは安価です。回転は少し毛むくじゃらになりますが (接線を中心に回転)、全体として、これは基本的なベジエ曲線の問題です。単純に曲線方程式を解いて、各頂点で星をレンダリングします。

すべてを実行できるビルトインはありません。交点の点を照会できますが、曲線を解決するのはレンダリングだけです。これは CoreGraphics によってカプセル化されているため、それを引き出したり、既存のものを利用したりすることはできません。

これは、自分で書くことを検討する必要があるものです。難しいことではありません。本音。微積分の基本的な理解だけが必要です...もしあれば。自分で書く場合は、必要に応じてワープ効果を追加することもできます.

于 2010-03-10T21:28:28.973 に答える
0

これは OpenGL の仕事のようです。CoreGraphics は、パスへの近さに応じて星をワープする簡単な方法を提供していません。

于 2010-03-04T18:34:50.457 に答える