到目前为止,我已经构建了一个应用程序,允许用户将图像拖放到 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/