ビューのスクリーンショットを撮ろうとしています。
次のリンクのコードを使用していますが、1 つの例外を除いて正常に動作しています。
私が抱えている問題は、アプリケーション ウィンドウを 2 番目のモニターにドラッグすると、スクリーン キャプチャが間違った四角形を取得することです。基本的に、四角形は垂直方向に移動しているか、左下ではなく左上の原点を使用している可能性があります。
奇妙なことに、アプリは起動モニターで正常に動作しますが、(アプリを閉じて再起動せずに) 2 番目のモニターにドラッグすると、rect キャプチャがうまくいきません。アプリを起動モニターにドラッグすると、すべてが再び機能し始めます。
プライマリ モニターとセカンダリ モニターの解像度は異なります。
rect を変換するコードは次のとおりです。
NSRect originRect = [aView convertRect:[aView bounds] toView:[[aView window] contentView]];
NSRect rect = originRect;
rect.origin.y = 0;
rect.origin.x += [aView window].frame.origin.x;
rect.origin.y += [[aView window] screen].frame.size.height - [aView window].frame.origin.y - [aView window].frame.size.height;
rect.origin.y += [aView window].frame.size.height - originRect.origin.y - originRect.size.height;
これがローンチモニターでは正しく計算されているのに、セカンダリモニターでは計算が間違っている理由を知っている人はいますか?
問題はさまざまな解像度に関連しているに違いありませんが、convertRect:toView (またはその後の計算) の呼び出しが機能しない理由がわかりません。
ところで、私はこれを 10.8.4 で開発し、10.7 をターゲットにしています。
ありがとう
ダレン。