我有一个窗口,其中包含NSView的子类.在视图中,我放了一个NSImage.
我希望能够将图像旋转90度,使图像的(新的)左上角保持在视图的左上角.当然,我必须旋转图像,然后翻译它以将原点放回原位.
在Carbon中,我找到了CGContextRotateCTM,它可以满足我的需求.但是,我在ObjC找不到合适的电话.setFrameCenterRotation似乎什么也没做,而在setFrameRotation中,我似乎无法弄清楚原点在哪里,所以我可以适当地翻译.
似乎有所动作.当我调整窗口大小时,它会放置图像(或者它的一部分,我似乎也有一个奇怪的剪辑问题),当我滚动时,它会跳转到另一个(并不总是saem)位置.
这对任何人都有意义吗?
谢谢
我在屏幕上为我正在处理的应用程序旋转文本和Cocoa(我假设你的意思是Cocoa而不是你的问题中的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度旋转是逆时针旋转.