2011-02-17 2 views
2

최근 iOS techtalk에서 "귀하의 그리기 작업이 픽셀 정렬되어 있는지 확인하십시오"라는 제안을 들었습니다.Mac에서 그리기 작업이 픽셀 정렬되어 있는지 확인하는 방법은 무엇입니까?

Mac/iOS 드로잉 성능에 적합한 제안입니까?

또 다른 질문은 픽셀 정렬을 사용하여 코드를 그리는 방법을 결정하는 것입니다.
도구 나 트릭이 도움이 될 수 있습니까?

+0

성명과 관련된 도면 기술은 무엇입니까? – justin

+0

드로잉 성능을 통해 Cocoa 드로잉 API, Quartz 드로잉 API, Core Animation API (기본적으로 애플리케이션 UI를 개발하는 데 사용되는 모든 기술, 예를 들어 OpenGL과 같은 기술은 포함되지 않음)를 참조하십시오. – Jonny

답변

8

픽셀 정렬은 성능과 관련이 없지만 렌더링 된 그래픽의 품질과 관련이 있습니다. 당신이 빨간 선을 볼 수이 코드를하려고하면

//Assume this is drawing in a rect such as a button or other NSView 
NSBezierPath *line = [NSBezierPath bezierPath]; 
[line moveToPoint:NSMakePoint(0,0)]; 
[line lineToPoint:NSMakePoint(200,0)]; 
[[NSColor redColor] set]; 
[line stroke]; 

:

그것을 설명하는 가장 좋은 방법은 코드의 약간을 보여주는 것입니다. 가까이서 보면 라인이 매우 선명하지 않습니다. 빨간색은 씻겨 나가고 너비는 약 2 픽셀 너비처럼 보입니다. 그 이유는 Cocoa의 그림은 픽셀이 아닌 점을 사용하기 때문입니다. 그 결과 두 픽셀 사이에 선이 그려집니다. 우리가 간단한 변경의 몇 가지를 만들 경우

//Assume this is drawing in a rect such as a button or other NSView 
NSBezierPath *line = [NSBezierPath bezierPath]; 
[line moveToPoint:NSMakePoint(0,0.5)]; 
[line lineToPoint:NSMakePoint(200,0.5)]; 
[[NSColor redColor] set]; 
[line stroke]; 

이 코드를 실행 ... 지금

를 (자세한 내용은. 워드 프로세서의 코코아 드로잉 가이드를 참조하십시오) 당신은 출력이 표시됩니다 당신 아마 원래 의도했다.

이것에 관해서는 말할 수있는 것이 많지만 근본적으로 0.5로 포인트를 상쇄하고 괜찮을 것입니다.

+0

감사합니다. sosborn! 정렬되지 않은 픽셀 도면을 신속하게 확인할 수있는 방법이 있습니까? – Jonny

+0

출력을 보면 실제로 알 수 있습니다. – sosborn

+0

실제로 iPhone 6 Plus를 사용하는 경우 0.5가 올바르지 않습니다. 올바른 값은 (1/[[UIScreen mainScreen] scale])입니다. – MoLice

2

OS X 10.7 이상에서는 backingAlignedRect:options:을 사용하여 ""에 ".. 저장 상점 픽셀 정렬 사각형"을 생성하고자 할 수 있습니다.

관련 문제