2013-01-21 1 views
2

스케일 된 이미지에 상대적으로 드로잉을하고 있으므로 소수점 CGPoints로 끝납니다. 나는 CoreImage 얼굴 탐지 루틴의 결과를 스케일링하고있다.코어 그래픽에서 소수 CGPoint 효과?

CGPathAddLineToPoint에서 이러한 요점을 사용할 때 직접 수행하거나 iOS에 맡기고 싶습니까? 반올림하는 것이 더 좋으면 반올림해야합니까?

픽셀 경계선 등을 읽었지만 여기에 그 적용법을 잘 모르겠습니다. 나는 여부는 라운드, 어떤 방향으로 수행 할 효과에 따라

features { 
    faceRect = "{{92, 144.469}, {166.667, 179.688}}"; 
    hasLeftEyePosition = 1; 
    hasMouthPosition = 1; 
    hasRightEyePosition = 1; 
    leftEyePosition = "{142.667, 268.812}"; 
    mouthPosition = "{176, 189.75}"; 
    rightEyePosition = "{207.333, 269.531}"; 
} 
+0

CoreGraphics는 선을 앤티 앨리어싱하고 불투명도/채도를 조정하여 '세 번째'픽셀을 그립니다. –

답변

9

결과 CALayer

CGPoint leftEye = CGPointMake((leftEyePosition.x * xScale), 
           (leftEyePosition.y * yScale)); 

// 드로잉입니다.

CoreGraphics 자체는 분수 좌표에는 전혀 문제가 없습니다. 그러나 분수 좌표를 사용하여 그림을 그릴 때 드로잉 된 객체가 앤티 엘리 어싱됩니다. 이것은 전형적으로 그것들을 퍼지게 만듭니다. 좌표를 적절하게 반올림하는 것은 이것을 피하는 것이 좋습니다.

그러나주의하십시오. 그리는 대상과 방법에 따라 정수 좌표 대신 0.5 픽셀 떨어져있는 좌표를 원할 수 있습니다. 예를 들어, 선을 그릴 경우 선은 사용자가 지정한 좌표에 중심을 맞 춥니 다. 따라서 1 픽셀의 선은 정수 좌표에 실제로 2 픽셀 너비의 퍼지 선이됩니다. 각 픽셀은 선의 절반을 차지합니다. 기억해야 할 가장 간단한 것은 스트로크는 좌표의 가운데에 배치되지만 채우기는 좌표로 묶여 있다는 것입니다. 따라서 직사각형을 채울 때, 적분 좌표가 가장 좋습니다. 직사각형을 칠하는 경우 좌표를 0.5 픽셀 (또는 사용하려는 획 너비의 절반)만큼 삽입합니다.

또한 scale = 2 인 망막 화면에 표시 할 이미지를 그리는 경우 0.5 단위 인 좌표는 실제로 픽셀 경계에 있습니다. 그래서 그것이 망막임을 알면 가장 가까운 반 단위 좌표가 괜찮을 때 완전 적분 좌표로 반올림하는 것을 피할 수 있습니다.

+0

감사합니다. 매우 도움이됩니다. –

관련 문제