IKImageView の選択およびコピー機能を使用しようとしています。画像付きのアプリがあれば、その一部を選択してクリップボードにコピーするのは簡単です。コピー メニュー ピックをファーストレスポンダの copy:(id) メソッドに設定すると、魔法のようにすべてが機能します。
ただし、他の操作の一部としてコピーするなど、より複雑なものが必要な場合は、これを行う方法が見つからないようです。
IKImageView には copy メソッドがないようです。選択された四角形を教えてくれるメソッドもないようです!
Hillegass の本を読んだので、画像の一部をビューから取り出す方法ではなく、クリップボードの仕組みを理解しています...
今、私は自分のプロジェクトを IKImageView に基づいて作成するのを間違えたと思い始めていますが、Preview が構築されている (または私が読んだ) ものなので、安定している必要があると考えました...そしてとにかく、もう手遅れです、やり直すには深すぎます...
IKImageView を使用しない以外に、選択した領域を手動でクリップボードにコピーする方法について何か提案はありますか?
EDIT実際には、copy(id) メソッドを見つけましたが、それを呼び出すと、
<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 からクリップボードにコピーしている別のプロジェクトで、copy:(id) を firstResponder に送信するだけだからです。実際、ファーストレスポンダーがそれで何をするかを確認してください...
EDIT 3 CGBitmapContextCreate エラーは、[imageView image]
奇妙なことに、文書化されたメソッドから発生しているようです。
setImage:(id) メソッドを使用してそこに画像を配置し、NSImage* を渡しているため、これが発生している可能性があります... NSImage を IKImageView に取得する他のより賢い方法はありますか?