2011-12-21 13 views
0

Mac OSでシンプルなスクリーンキャプチャプログラムを開発しています。メインウィンドウを透明に設定し、メインウィンドウに含まれるNSBoxインスタンスを使用してキャプチャする領域を指定します、ここで重要なコードと私のプログラム(パブリックイメージに申し訳ありませんが、評判)の主なインタフェースは、以下のとおりです。私が好きな私は右の画像を得ることができないココアでスクリーンキャプチャプログラムを開発する際に問題が発生する

capturedImage = CGDisplayCreateImage(kCGDirectMainDisplay);//capture the whole screen 

NSRect boxRect = [mBox borderRect];//mBox is an instance of NSBox, lies in main window 

capturedImage = CGImageCreateWithImageInRect(capturedImage, boxRect);//obtain an image specified by mBox 

、私が知っている座標と間違って何かがあるかもしれませんが、私はそれを把握することはできません、誰かが私にこれを助けることができますか? もう1つ、メインウィンドウに3つのボタンがありますが、メインウィンドウの右下に固定したいのですが、メインウィンドウをドラッグしてサイズを変更してもらいたいのですが、Interface Builderのレイアウトスキーマについてはわかりません。溶液?コメント付きで本当に便利なコードになります。どうもありがとう。

答えて

1

あなたにはread up about coordinate systems.が必要です。NSBoxインスタンスはビューであり、そのborderRectはウィンドウ座標で矩形を返します。

画面全体がその座標系を使用しているため、四角形が画面座標系内にある必要があります。このメソッドを使用して、矩形を変換することができます。

NSRect screenBoxRect = [[mBox window] convertRectToScreen:[mBox frame]]; 
関連する問題