3

私は Xcode にかなり慣れていないので、Quartz の描画に慣れることにしました。徐々に慣れてきましたが、ベジェ パスの描画に問題があります。

特に、Illustrator のデザインから図形 (トランプのスペードのロゴ) を描きたいのですが、x 点と y 点は問題ありません。 2番目です。

私はいつも、机を想像し、その上に沿って形状の外側を回転させると(形状は常に机の下ではなく机の上にある)、最初の制御点が左側にあり、2 番目の制御点が左側にあると想像していました。右側に。

ケースは何ですか?

前もってありがとう、アダム。

ここに私が何を意味するかを説明する写真があります

そして、ここに私のコードがあります:

CGMutablePathRef spadePath = CGPathCreateMutable();

CGPathMoveToPoint(spadePath, NULL, 17.0f, 0.0f);

CGPathAddCurveToPoint(spadePath, NULL, 17.0f, 7.3f, 17.0f, 7.318f, 34.0f, 25.475f);
CGPathAddCurveToPoint(spadePath, NULL, 34.0f, 14.754f, 34.0f, 36.197f, 20.838f, 35.029f);
CGPathAddCurveToPoint(spadePath, NULL, 24.679f, 38.425f, 20.838f, 41.03f, 17.0f, 39.2f);
CGPathAddCurveToPoint(spadePath, NULL, 2.846f, 39.2f, 31.156f, 39.2f, 13.163f, 35.029f);
CGPathAddCurveToPoint(spadePath, NULL, 13.163f, 41.03f, 9.323f, 38.425f, 0.0f, 25.475f);
CGPathAddCurveToPoint(spadePath, NULL, 0.0f, 36.197f, 0.0f, 14.754f, 17.0f, 0.0f);

CGPathCloseSubpath(spadePath);
4

2 に答える 2

4

私は自分の質問に対する答えを見つけました.曲線を描くとき、​​その1つのセクションの重要な座標を伝えています.

したがって、コントロール ポイント 1 の x 座標と y 座標を解析するときは、重要なコントロール ポイントのコントロール ポイント座標を開始点に与え、最後の点と同じように最後の点の位置を与えます。

例えば、

制御点を使用した扇形の描画

于 2012-06-22T02:23:17.440 に答える
2

座標の一部を間違って転記しました。たとえば、最初の曲線は次のとおりです。

CGPathAddCurveToPoint(spadePath, NULL, 17.0f, 7.3f, 17.0f, 7.318f, 34.0f, 25.475f);

しかし、図によると、次のようになります。

CGPathAddCurveToPoint(spadePath, NULL, 17.0f, 7.318f, 30.0f, 14.754f, 34.0f, 25.475f);

ただし、Illustrator の図では、ポイント 2 に接続されたコントロール ポイントのラベルが間違った X 座標で付けられているようにも見えます。それらは 30 と表示されていますが、おそらく 34 と表示されているはずです。すべてのラベルを確認したわけではありません。

于 2012-06-22T01:40:21.093 に答える