2014-04-05 5 views
0

체크 아웃 내 페인트 응용 프로그램이 생성이 이상한 경로 : 1에서 중간에 빨간색 선은 입력, 마우스 움직임과 그들 사이의 거리를 나타내는 디버그 기능입니다석영 2D 들쭉날쭉 라인

/Users/michaelsavich/Desktop/Debug pic.jpeg

, px 선 너비이고 검정색은 30px 너비의 출력입니다.

나는이 간단 그리기 해요 방법, 단지 포인트 - 투 - 포인트 합체 마우스 이벤트 사이 :

//This is called in mouseDragged: and [theEvent locationInWindow] is passed to point 
-(void)addPointToCurrentStroke:(CGPoint)point 

if (self.newStroke == TRUE) //If the currentStroke doesn't exist or is empty 
{ 
    self.currentStroke = CGPathCreateMutable(); 
    CGPathMoveToPoint(self.currentStroke, NULL, point.x, point.y); 
    self.newStroke = FALSE; 
} 

else if (self.newStroke == FALSE) 
    CGPathAddLineToPoint(self.currentStroke, NULL, point.x, point.y); 
} 

은이 경로는 다음의 drawRect에 쓰다 : 해당 사용자 설정으로,이 경우 크기 30 및 색상 검정. 둥근 선 뚜껑을 참고하십시오. 둥근 선 뚜껑을 사용하면 더 선명하게 만들 수 있습니다.

그런데 왜 내가 스파이크를 의도 한 경로에서 멀리 파킹 시키려고합니까? 나는 머리카락이나 꼬리를 만들 수 없다. 아무도 나에게 여기에 무슨 일이 일어나는지 말해 줄 수 없다면 크게 감사하겠습니다.

+0

비슷한 질문 : [ "특정 각도에서 조인 된 선은 둥근 대신 정점을 가리 킵니다."] (http://stackoverflow.com/questions/20307817/joined-lines-at-certain-angles-have-pointed-vertexes- round-ofed/20307928 # 20307928), [ "UIBezierPath round edges?"] (http://stackoverflow.com/questions/18167327/uibezierpath-round-edges/18167360#18167360). –

답변

1

CG 컨텍스트가 패스의 각 구석에서 마이 터 조인을 사용하도록 설정되었습니다. 그 코너에 작은 각이있을 때, 현수교는 상당한 거리를 튀어 나올 수 있습니다. CGContextSetLineJoin을 사용하여 대신 라운드 결합 또는 경사 결합을 지정하십시오.

Quartz 2D Programming Guide, "Parameters That Affect Stroking"을 참조하십시오.

+0

내가 얼마나 감사한지 말할 수 없다! 이제 내 라인이 마침내 정상적으로 보입니다 ... 나는 더 흥미 진진한 것들로 이동할 수 있습니다! – PopKernel