Как перевести и масштабировать NSImage?

До сих пор я создал приложение, которое позволяет пользователю перетаскивать изображения на NSImageView. Однако я хочу иметь возможность перемещать эти изображения, просто нажимая на любое изображение и удерживая кнопку мыши, чтобы переместить его местоположение.

Как я могу манипулировать NSImageView для перевода / масштабирования после установки изображений вниз? Это возможно? Я читал о NSAffineTransform, но похоже, что он перемещает изображения перед созданием самого изображения. У меня уже есть изображения на холсте, и я просто хочу нажать и удерживать изображение и переместить его с помощью мыши. Пожалуйста, помогите всем!

1 ответ

Решение

У этого есть две стороны.

NSImage это объект модели, который вы, возможно, захотите отобразить по-разному, сохранить на диск / в архив и т. д. Если вы действительно хотите изменить модель (масштабирование, вращение и т. д.), что подразумевает постоянное изменение, то вы собираетесь наверное хочу посмотреть на NSAffineTransform, Кварцевый рисунок и др.

Но вы, вероятно, не имели в виду это. Вместо этого вы, вероятно, заинтересованы в NSImageView, который является объектом просмотра, отображающим содержимое NSImage объект модели, используя любые атрибуты отображения по желанию. Если вы хотите изменить только способ отображения изображения, а не фактические байты в изображении, то вы будете манипулировать NSImageView во время выполнения. Ты можешь использовать NSAffineTransform здесь, но это несколько необычно (и обычно не нужно).

Ключевым моментом, который стоит отметить, является NSImageView наследуется от NSView так что у вас есть вся его сила в вашем распоряжении. Взгляните на некоторые методы, такие как:

-setFrameSize: - полезно для изменения размера изображения и, следовательно, масштаба отображения изображения

-setFrameOrigin: - полезно для изменения положения вида и, следовательно, видимого положения изображения

Еще раз обратите внимание, что они не имеют ничего общего с изображениями как таковыми и применяются ко всем представлениям Какао. Возможно, вы захотите взглянуть на такую ​​книгу, как " Программирование какао для Mac OS X", чтобы познакомить вас с основами. (Затем вы можете делать более интересные вещи, такие как вращение, анимация и т. Д.)

Другие вопросы по тегам