2011-02-10 1 views
3

저는 주로 버튼 아이콘 인 Cocoa에서 UI 요소 중 일부를 그리려하지만, 원하는 정확도를 얻으려면 큰 어려움을 겪고 있습니다.코코아로 픽셀을 완벽하게 그리는 법

[[NSColor redColor] set]; 
[NSBezierPath strokeRect:myRect]; 

을하지만 제가 보는 것은 빨간색 사각형 라인은 항상 퇴색된다 :

나는 사각형을 그릴과 같은 매우 간단한 코드를 사용하고 있습니다.

무엇이 여기에 있습니까?

[[NSGraphicsContext currentContext] setShouldAntialias:NO]; 

또는 대신 베 지어 패스의 NSFrameRect를 사용할 수 있으며, 유지에 앤티 앨리어싱 동안 즉, 당신이 원하는 정밀도를 얻을 것입니다 :

+0

NSBezierPath의 성능에 심각한 문제가 있습니다. 사각형에 사용 하시겠습니까? –

+0

나는 원래 포스터가 더 복잡한 그림을 그리려는 것으로 가정하지만 처음에는 rect를 그려 보려고했다. –

+0

예, 이것은 제가 만들 수있는 간단한 예 였지만 NSBezierPath의 성능에 대해서는 잘 모릅니다. 그래서 대안을 살펴 보겠습니다. – BenL0

답변

8

코코아 좌표는 실제로 그릴 픽셀의 가운데를 지정합니다. 예를 들어 왼쪽 하단 픽셀을 그리려면 좌표 (0.5,0.5)를 사용해야합니다.

좌표에 반 화소를 더하거나 뺍니다. 픽셀 완전해야합니다.

+0

간단하고 고맙습니다. 문서의 어느 곳에서도 볼 수 없었습니다. – BenL0

0

이 같은 그래픽 컨텍스트에 대한 안티 앨리어싱을 해제 할 수 있습니다

NSFrameRect(myRect); 
+1

이 게시물의 투표가 종료 된 이유는 무엇입니까? 그것의 정확한 답변 –

+1

잘, 어쩌면 안티 앨리어싱을 사용하지 않는 것이 좋은 생각이 아니기 때문일 것입니다. –

+0

그것은 올바른 대답이 아닙니다. 이것은 포스터의 문제를 해결하는 방법입니다. 야콥의 대답을보십시오. – Jay