2009-05-11 4 views
0

이미지를 볼 수있는 Mac 플러그인이 있습니다. 원래 Quickdraw로 작성되었으며 Quartz로 옮기려고합니다.Quartz Plugin의 왼쪽 위 모서리 찾기

현재 문제는 근본 원인입니다. QD에서 원점은 플러그인 직사각형의 왼쪽 위 모서리입니다. Quartz에서는 플러그인 직사각형 위쪽 (파이어 폭스 버튼 등 제외)의 한 화면 높이 인 것처럼 보입니다. 이것은 실제로 플러그인 사각형의 중간에서 임의의 임의의 위치에 있습니다.

또한 브라우저 창의 그리기 부분의 크기를 알아야 함을 의미합니다. 나는 창문이 얼마나 큰지를 알아낼 수있을 것이라고 확신하지만, 얼마나 많은 공간이 탭 등으로 채워지는지 알 수 있을까요? 맥은 그런 것들에 대해서 모른다. 그렇지?

관련 메모에 누가 애플이 왜 원점을 왼쪽 하단에두기로 결정했는지 알 수 있습니까? 멍청한 것 같아.

답변

1

NSView를 사용하는 경우 -isFlipped 함수의 구현을 만들어 YES를 반환하면 뒤집은 좌표계를 기반으로 그릴 수 있습니다. 당신이 NSView의를 사용하지 않는하지만 원시있는 CoreGraphics 드로잉하고 있다면

또는, 그렇게 같은 CTM을 수정할 수 있습니다

CGContextScaleCTM(context, 1.0, -1.0); 

this Apple Q&A document에서 온다.

CGContextSaveGState(context); 

// do your stuff here ... 

CGContextRestoreGState(context); 

아, 그리고 원산지 : 당신이 뭔가에 의해 주어진 봤는데 CGContextRef와 함께이 일을하는 경우

, 먼저 기존의 CTM을 저장하고 복원해야합니다 당신이 완료되면 Quartz 렌더링 시스템은 포스트 스크립트를 기반으로하는 PDF 그래픽 시스템을 기반으로하고 왼쪽 아래에 원점이 있기 때문에 왼쪽 아래에 있습니다.

+0

스케일링 문제는 실제로 나를 괴롭히지 않습니다. 나는 부정적인 것을 처리 할 수 ​​있습니다. 문제는 이미지를 내 플러그인 공간의 왼쪽 상단 모서리에 고정하는 데 문제가 있다는 것입니다. 원점이 찾기 어렵 기 때문에 문맥에 그릴 때 정확한 위치로 이미지를 변환하는 것이 어렵습니다. –

+0

반전 된 뷰 좌표를 사용하는 경우 원점이 효과적으로 왼쪽 상단이됩니다 . 그렇지 않으면, 그것은 * 이미지의 왼쪽 아래 원점의 경우 일 것입니다 * 플러그인보기 높이 - 이미지 높이입니다. NSMaxY (pluginView.bounds)는 상단 가장자리의 y- 인덱스를 제공하므로'image.bounds.origin.y = (NSMaxY (pluginView.bounds) - image.size.height);' –

관련 문제