如何翻译和扩展NSImage?

时间:2012-06-18 22:18:08

标签: cocoa translate nsimage nsimageview nsaffinetransform

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

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

1 个答案:

答案 0 :(得分:2)

这有两个方面。

NSImage 是模型对象,您可能希望以不同的方式显示,保存到磁盘/存档等。如果您想要实际更改模型< / em>(缩放,旋转等),意味着永久性的变化,那么你可能想要看NSAffineTransform,石英绘图等。

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

需要注意的关键是NSImageView继承自NSView,因此您可以随心所欲。看看某些方法,例如:

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

-setFrameOrigin: - 用于更改视图位置,从而改变视在图像的位置

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