3

ベースのアニメーションで使用するオフスクリーン ウィンドウの画像を取得しようとしていますが、CALayerどの方法を試しても反対側に画像を取得できません。プロジェクトのカスタムNSWindowサブクラスで使用しているコードは次のとおりです。

CGImageRef windowImage = CGWindowListCreateImage(CGRectNull, 
                                                 kCGWindowListOptionAll, 
                                                 (CGWindowID)[self windowNumber], 
                                                 kCGWindowImageDefault);

画像は次のようになります。

代替テキスト

そして、これが私が得たものです(わずかに大きいサイズは無視してください-それは画像のレンダリングにおける私のせいです):

代替テキスト

誰かが私が間違っているところを見ることができますか? 奇妙なことに、Quartz Debug は問題なくウィンドウ イメージを表示できますが、Apple の Son of Grab サンプル コードは表示できません。

4

1 に答える 1

2

CGWindowListCreateImageCGWindow.hのドキュメント コメントから:

kCGWindowListOptionAll, kCGWindowListOptionOnScreenOnly: このユーザー セッションの画面上のすべてのウィンドウを使用して、イメージを作成します。パラメータwindowIDは である必要がありますkCGNullWindowID

そのため、関心のある四角形内にあるすべてのウィンドウのスクリーンショットを取得しています。

特定のウィンドウのスクリーンショットを撮るには、 を使用しますkCGWindowListOptionIncludingWindow

于 2010-10-28T04:22:25.927 に答える