cocoa - 如何平移和缩放 NSImage?

标签 cocoa translate nsimage nsimageview nsaffinetransform

到目前为止,我已经构建了一个应用程序,允许用户将图像拖放到 NSImageView 上。但是,我希望能够通过简单地单击任何图像并按住鼠标按钮来移动其位置来移动这些图像。

设置图像后如何操作 NSImageView 进行平移/缩放?那可能吗?我读过有关 NSAffineTransform 的内容,但似乎是在创建图像本身之前移动图像。我已经在 Canvas 上有了图像,只想单击并按住图像并用鼠标移动它。请帮助任何人!

最佳答案

这有两个方面。

NSImage 是模型对象,您可能希望以不同的方式显示它,保存到磁盘/存档等。如果您想实际更改 模型(缩放、旋转等),意味着永久更改,那么您可能想查看NSAffineTransform、Quartz 绘图等。

但你可能不是这个意思。相反,您可能对 NSImageView 感兴趣,它是一个 View 对象,使用所需的任何显示属性来显示 NSImage 模型对象的内容。如果您只想更改图像的显示方式,而不是图像中的实际字节,那么您将在运行时操作 NSImageView。您也可以在此处使用 NSAffineTransform,但它有点不常见(而且通常是不必要的)。

需要注意的关键是 NSImageView 继承自 NSView ,因此您可以使用它的所有功能。看一下某些方法,例如:

-setFrameSize: - 用于更改 View 大小,从而更改图像显示比例

-setFrameOrigin: - 用于更改 View 位置,从而更改外观图像位置

再次注意,这些与图像本身无关,并且适用于所有 Cocoa View 。您可能想看一下像 Cocoa Programming for Mac OS X 这样的书让您了解基础知识。 (然后你可以做更多有趣的事情,比如旋转、动画等)

关于cocoa - 如何平移和缩放 NSImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11091906/

相关文章:

python - Matlab 到 Python - 为什么嵌套 for 循环在 python 中运行频率是两倍?

google-translate - 安卓。谷歌 API 翻译

ios - 将 NSImage 从 CMYK 转换为 RGB

cocoa - 第一次在 Mac OSX 中设计 View /窗口

iphone - 如何开始编写 iPad 应用程序?

objective-c - cocoa /ObjC : Place a floating window above a modal window

android - 如何绘制图像的 'shadow' 版本?

objective-c - 使用添加符号作为 NSImage

objective-c - 将包含一些 CALayers 的 NSView 渲染到 NSImage

html - NSXMLParser 中的 RSS 检测器