2014-09-22 1 views
1

Mac OS X (iOS가 아닌)에서 벡터 그래픽을 사용하고 있는데, 벡터 그래픽 프리미티브를 할 때 맥 오에스 텐에서 선이 흐리게 나타나는 픽셀 간의 고전적인 그림을 보았습니다. 나는 Core Graphics/Quartz를 CGBitmapContext에 직접 적용하고있다.Mac OS X의 CGBitmapContext에서 픽셀 정렬/픽셀 완전/백킹 저장소 정렬/선명한 그리기를 수행하려면 어떻게해야합니까?

내가 발견 한 this blog post과 Stack Overflow 질문을 발견했습니다.이 점이 Retina 화면에서 깨지다는 기사의 주장 때문에 각 좌표에 0.5를 더하고 싶지 않습니다.

이 기사에서는 배킹 스토어 좌표를 사용하여 언급하지만 CGBitmapContext 만 빼고는 Core Graphics에서 배킹 스토어 함수를 찾을 수 없습니다.

나는 모두 CGContextConvertPointToDeviceSpace()CGContextConvertPointToUserSpace()을 시도했지만 둘 다 아무 소용이 없습니다.

My bitmap context is transformed.

나는 어떤 옵션이 있습니까? 감사.

대체 질문 : 포인트 좌표를 사용할 수 없기 때문에 (4,4)는 항상 (4,4)이고 (3.5,3.5) 또는 이상한 것입니까? 이것은 메모리 내 이미지를위한 것이므로 DPI는 아직 큰 문제가 아닙니다. 감사.

답변

2

이것은 매뉴얼에서 직접 확인해주었습니다. 희망이 누군가를 돕는 :

CGRect r = CGRectMake(0,0,20,20); 
r = CGContextConvertRectToDeviceSpace(context, r); 
r.origin.x = floor(r.origin.x); 
r.origin.y = floor(r.origin.y); 
r.size.width = floor(r.size.width); 
r.size.height = floor(r.size.height); 
r = CGContextConvertRectToUserSpace(context, r);