2012-06-21 5 views
3

저는 Xcode에 새로 입문해서 천천히 익숙해 져 있지만 Quartz 드로잉에 익숙해지기로 결정했습니다. 베 지어 경로를 그리는 데 문제가 있습니다.CGPath (AddCurveToPoint) - 첫 번째 제어점의 x와 y 사이의 차이와 두 번째

특히 Illustrator 디자인에서 x 및 y 포인트는 괜찮지 만 모양을 그려야합니다 (카드 더미에서 스페이드 로고 사용). 제어점 및 두 번째입니다.

책상을 상상하고 모양의 바깥 쪽을 회전하면 (즉, 모양이 항상 책상 위의 반대편에 있으므로) 첫 번째 제어 지점이 왼쪽에있는 것처럼 상상해보십시오. 두 번째는 오른쪽에 있습니다.

어떤 경우입니까?

미리 감사드립니다.

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); 
+0

I A, 방법은 시행 착오 그냥이 그림. 그러나 모양을 그리고 CG 코드를 출력 할 수있는 멋진 프로그램이 있습니다. http://www.paintcodeapp.com/ –

+0

좋아 보인다! 하지만 100 달러는 아닙니다! 분명히 논리를 따르는가? –

답변

2

당신은 잘못 좌표의 일부를 전사했습니다

Here is a picture describing what I mean

그리고 여기 내 코드입니다. 예를 들어, 다음은 첫 번째 곡선의 :

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

그러나, 일러스트 레이터의 그림에서, 그것도 가리 키도록 부착 된 제어 지점과 같습니다

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

하지만 당신의 그림에 따르면,이 있어야한다 2는 잘못된 X 좌표로 레이블이 지정됩니다. 그들은 30이라고 표시되어 있지만 34로 표시되어야합니다. 모든 라벨을 확인하지 않았습니다.

4

필자는 내 자신의 질문에 대한 답을 알아 냈습니다. 곡선을 그릴 때 그 부분에 대한 필수적인 좌표를 말하고 있습니다.

제어점 1에 대한 x 및 y 좌표를 파싱 할 때 필수 제어점의 제어점 좌표를 시작점에 제공하고 마지막 점에 대한 제어점 좌표 및 마지막 점에 대한 위치를 제공합니다 . 예를 들어

,

Sector drawing with control points