我有一个包含NSView子类的窗口。在视图中,我放置了一个NSImage。
我希望能够将图像旋转90度,将图像的(新)左上角保留在视图的左上角。当然,我必须旋转图像,然后对其进行平移以将原点放回原点。
在Carbon中,我发现了CGContextRotateCTM,它能做我想要的事情。但是,我在ObjC中找不到正确的调用。setFrameCenterRotation似乎什么都不做,而在setFrameRotation中,我似乎找不出来源在哪里,所以我可以正确地进行翻译。
它似乎在移动。当我调整窗口大小时,它会将图像(或其中的一部分,我似乎有一个奇怪的裁剪问题)放入窗口,而当我滚动时,它会跳到一个不同的位置(并不总是saem)。
这对任何人来说都有意义吗?
谢谢
发布于 2009-06-30 19:01:32
我在屏幕上为我工作的一个应用程序和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度的旋转是逆时针旋转。
https://stackoverflow.com/questions/1065337
复制相似问题