Мне нужно сделать следующее в моем приложении какао (OS X):
- Разрешить пользователю добавить изображение на
NSImageView
. - Как только изображение будетdrop проецирует на изображение прямоугольник фиксированного размера, указывая область изображения, которая будет использоваться в качестве эскиза.
- Разрешите пользователю перетаскивать прямоугольник вокруг, чтобы точно указать нужный эскиз.
- После позиционирования пользователь нажимает кнопку, которая сохраняет изображения и миниатюры в файлы.
Это вторая пуля, о которой я хотел бы получить некоторые отзывы.Моя идея состоит в том, чтобы сделать следующее:
- В IB перетащите на мой взгляд
NSImageView
, который примет изображение. - После завершения удаления создайте еще один
NSView
(точно такой же размер, как у NSImageView
) и спроецируйте его на NSImageView
и отобразите прямоугольник для эскиза.Вероятно, мне придется создать подкласс NSView
, чтобы он был прозрачным и поддерживал рисование и изменение положения прямоугольника. - Разрешить пользователю перетаскивать прямоугольник вокруг.Как только пользователь примет положение миниатюры, создайте миниатюру из изображения, проецируя прямоугольник на изображение в
NSImageView
.
Я понимаю, что для работы с перекрывающимися видами мне нужно включить слои (setWantsLayer: YES
) для родительского представления.Тем не менее, я нашел несколько смешанных отчетов об этом, утверждая, что перекрывающиеся экземпляры NSView
не могут быть сделаны, и это может быть сделано только с помощью CALayer
.Также, если есть более простые способы захвата миниатюры с NSImageView
, ввод очень важен.