Я пытаюсь использовать функцию выбора и копирования IKImageView. Если все, что вы хотите сделать, это приложение с изображением, выберите часть и скопируйте ее в буфер обмена, это легко. Вы устанавливаете выбор меню копирования для копирования первого экземпляра ответа: (id), и магически все работает.Другой вопрос IKImageView: копирование области
Однако, если вам нужно что-то более сложное, например, вы хотите скопировать как часть какой-либо другой операции, я не могу найти способ сделать это.
У IKImageView, похоже, нет метода копирования, он, похоже, не имеет метода, который даже скажет вам выбранный прямоугольник!
Я прошел через книгу Hillegass', так что я понимаю, как работает с буфером обмена, но только не как получить часть изображения, вне поля зрения ...
Теперь, я начинаю думать, что Я ошибся в том, чтобы основывать свой проект на IKImageView, но это то, на чем был построен «Превью» (или так я читал), поэтому я решил, что он должен быть стабильным ... и так или иначе, теперь уже слишком поздно, я тоже глубоко в этом, чтобы начать заново ...
Так, кроме использования IKImageView каких-либо предложений о том, как скопировать область выбора в буфер обмена вручную?
EDIT на самом деле, я нашел способ копирования (ИН), но когда я называю его, я получаю
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 16 bits/pixel; 1-component color space; kCGImageAlphaPremultipliedLast; 2624 bytes/row.
который, очевидно, не происходит, когда я делаю обычную копию через первый Ответчик ... Я понимаю сообщение об ошибке, но я не уверен, где он получает эти параметры от ...
Есть ли способ проследить это и посмотреть, как это происходит? Отладчик не поможет по очевидным причинам, а также тот факт, что я делаю это в Mozilla, поэтому отладчик не является вариантом в любом случае ...
EDIT 2 Мне кажется, что copy: (id) метод, который я нашел, может копировать VIEW, а не копировать кусок изображения в буфер обмена, и это то, что мне нужно.
Причина, по которой я думал, что это копия буфера обмена, заключается в том, что в другом проекте, где я копирую из IKImageView в буфер обмена прямо из меню редактирования, он просто отправляет копию: (id) первому ответу, но Я на самом деле не уверен, что firstresponder делает с ним ...
EDIT 3 оказывается, что ошибка CGBitmapContextCreate исходит от [imageView image]
который, как ни странно, IS документированный способ.
Возможно, это происходит потому, что я помещаю изображение там с помощью метода setImage: (id), передавая ему NSImage * ... Есть ли какой-нибудь другой, более умный способ получить NSImage в IKImageView?
Вы можете определенно отладки плагинов во внешнем приложении, например, Mozilla/Firefox. Просто создайте пользовательский исполняемый файл в своем проекте Xcode и укажите его на приложение, которое вы хотите отлаживать. Я сделал это очень успешно с Safari, Dreamweaver, Adobe GoLive и другими. –
«Мне кажется, что метод« copy: (id) », который я нашел, может копировать VIEW, а не копировать кусок изображения в буфер обмена ...» Нет. Вы думаете о 'copy' (обратите внимание на аргументы), который возвращает копию объекта и не работает с представлениями. 'copy:' (один аргумент) '- это действие, которое сообщает приемнику (представлению) скопировать его выбор в буфер обмена. –