2011-12-21 56 views
0

我正在Mac OS下開發一個簡單的屏幕截圖程序,我將主窗口設置爲透明,並使用主窗口中包含的NSBox實例指定要捕獲的區域,這裏是我的方案的顯著代碼和主界面(抱歉,沒有信譽的公衆形象):在Cocoa開發屏幕截圖程序時遇到問題

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 

,因爲我想,我知道可能有一些錯誤的座標,我不能得到正確的圖像,但我無法弄清楚,有人可以幫助我嗎?另一個,主窗口上有3個按鈕,當我拖動和調整主窗口大小時,我希望它們固定在主窗口的右下方,但我不知道Interface Builder的佈局架構,有沒有什麼好的方法解?最好是有意見的真正有用的代碼。非常感謝。

回答

1

您需要read up about coordinate systems.您的NSBox實例是一個視圖,並且要求其borderRect將在窗口座標中返回一個矩形。

您需要矩形在屏幕座標系中,因爲您的整個屏幕圖像使用該座標系。您可以使用此方法轉換矩形:

NSRect screenBoxRect = [[mBox window] convertRectToScreen:[mBox frame]];