Я пытаюсь использовать функцию выбора и копирования IKImageView. Если все, что вам нужно, это иметь приложение с изображением, выбрать часть и скопировать ее в буфер обмена, это легко. Вы устанавливаете пункт меню копирования на метод копирования первого респондента: (id), и волшебным образом все работает.
Однако, если вы хотите что-то более сложное, например, копировать как часть какой-либо другой операции, я не могу найти способ сделать это.
IKImageView, похоже, не имеет метода копирования, у него, похоже, нет метода, который даже скажет вам выбранный прямоугольник!
Я просмотрел книгу Хиллегаса, поэтому я понимаю, как работает буфер обмена, но не то, как вывести часть изображения из вида ...
Теперь я начинаю думать, что допустил ошибку, основав свой проект на IKImageView, но это то, на чем основан Preview (или я так прочитал), поэтому я решил, что он должен быть стабильным ... и вообще, сейчас уже слишком поздно, я слишком глубоко в этом разбираюсь ...
Итак, кроме использования IKImageView, есть предложения, как скопировать выбранную область в буфер обмена вручную?
РЕДАКТИРОВАТЬ На самом деле, я нашел метод copy (id), но когда я его вызываю, я получаю
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 16 bits/pixel; 1-component color space; kCGImageAlphaPremultipliedLast; 2624 bytes/row.
Что, очевидно, не происходит, когда я делаю обычную копию через первого респондента ... Я понимаю сообщение об ошибке, но я не уверен, откуда он получает эти параметры ...
Есть ли способ отследить это и посмотреть, как это происходит? Отладчик не поможет по понятным причинам, а также из-за того, что я делаю это в Mozilla, поэтому отладчик в любом случае не вариант ...
РЕДАКТИРОВАТЬ 2 Мне кажется, что метод copy: (id), который я нашел, может копировать VIEW, а не копировать часть изображения в буфер обмена, что мне и нужно.
Причина, по которой я думал, что это была копия буфера обмена, заключается в том, что в другом проекте, где я копирую из IKImageView в буфер обмена прямо из меню редактирования, он просто отправляет копию: (id) в firstResponder, но я Я не совсем уверен, что делает с ним первый корреспондент ...
EDIT 3 Похоже, что ошибка CGBitmapContextCreate исходит от [imageView image]
, что, как ни странно, IS документированного метода.
Вполне возможно, что это происходит, потому что я помещаю изображение туда с помощью метода setImage: (id), передавая ему NSImage * ... Есть ли какой-то другой, более умный способ вставить NSImage в IKImageView