문제

NSView의 서브 클래스가있는 창이 있습니다. 전망 안에는 nsimage를 넣었습니다.

이미지를 90도 씩 회전시켜 이미지의 (새) 왼쪽 상단을보기의 왼쪽 상단 모서리에 유지하고 싶습니다. 물론 이미지를 회전시킨 다음 원점을 다시 제자리에 놓도록 번역해야합니다.

탄소에서, 나는 내가 원하는 것을하는 cgcontextrotatectm을 발견했다. 그러나 OBJC에서 올바른 전화를 찾을 수 없습니다. setframecentErrotation은 아무것도하지 않는 것 같습니다. 그리고 Setframerotation에서는 원점이 어디에 있는지 알아낼 수 없으므로 적절하게 번역 할 수 있습니다.

움직이는 것 같습니다. 창을 조정하면 이미지 (또는 일부는 WEL과 같은 이상한 클리핑 문제가있는 것 같습니다)를 스크롤하면 스크롤하면 다른 (항상 SAEM) 위치로 이동합니다.

이것이 누구에게나 의미가 있습니까?

감사해요

도움이 되었습니까?

해결책

내가 작업하는 앱의 화면에서 텍스트를 회전하고 코코아 (질문에서 OBJC가 아닌 코코아를 의미한다고 가정합니다)이 작업을 수행하는 방법은 nsaffinetransform을 사용하는 것입니다.

여기에 시작해야 할 스 니펫이 있습니다

double rotateDeg = 90;
NSAffineTransform *rotate = [[NSAffineTransform alloc] init];
NSGraphicsContext *context = [NSGraphicsContext currentContext];

[context saveGraphicsState];
[rotate rotateByDegrees:rotateDeg];
[rotate concat];

    /* Your drawing code [NSImage drawAtPoint....]for the image goes here 
       Also, if you need to lock focus when drawing, do it here.       */

[rotate release];
[context restoreGraphicsState];

회전에 대한 수학은 여기에서 조금 까다로워 질 수 있습니다. 90 도의 회전은 시계 반대 방향으로 회전합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top