首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSImage旋转

NSImage旋转
EN

Stack Overflow用户
提问于 2009-06-30 18:50:41
回答 1查看 4.8K关注 0票数 1

我有一个包含NSView子类的窗口。在视图中,我放置了一个NSImage。

我希望能够将图像旋转90度,将图像的(新)左上角保留在视图的左上角。当然,我必须旋转图像,然后对其进行平移以将原点放回原点。

在Carbon中,我发现了CGContextRotateCTM,它能做我想要的事情。但是,我在ObjC中找不到正确的调用。setFrameCenterRotation似乎什么都不做,而在setFrameRotation中,我似乎找不出来源在哪里,所以我可以正确地进行翻译。

它似乎在移动。当我调整窗口大小时,它会将图像(或其中的一部分,我似乎有一个奇怪的裁剪问题)放入窗口,而当我滚动时,它会跳到一个不同的位置(并不总是saem)。

这对任何人来说都有意义吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-30 19:01:32

我在屏幕上为我工作的一个应用程序和Cocoa旋转文本(我假设您在问题中指的是Cocoa,而不是ObjC )执行此操作的方法是使用NSAffineTransform。

这是一个可以帮助您入门的代码片段

代码语言:javascript
复制
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度的旋转是逆时针旋转。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1065337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档