2012-06-18 63 views
0

我已经构建了一个允许用户将图像拖放到NSImageView上的应用程序。不过,我希望能够通过单击任何图像并按住鼠标按钮移动它的位置来移动这些图像。如何翻译和缩放NSImage?

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

回答

2

这有两个方面。

NSImage是模型对象,你可能想以不同的方式显示,保存到磁盘/存档等,如果你想真正改变模型(缩放,旋转等),这意味着一个永久的变化,那么你可能会想要看看NSAffineTransform,石英素描等。

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

要注意的关键是NSImageView继承NSView,所以你有它的所有权力在您的处置。看一看某些方法中,如:

-setFrameSize: - 有用用于改变视图的大小,并且因此图像显示比例

​​- 用于改变视图位置是有用的,并且因此明显的图像位置

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

+0

这就是我所做的,谢谢! –

+0

@ ObjectiveC-InLearning很高兴为您服务! –