Проблемы встречаются при разработке программы захвата экрана под Какао - PullRequest
0 голосов
/ 21 декабря 2011

Я разрабатываю простую программу захвата экрана под 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

Я не могу получить правильное изображение, как я хочу, я знаю, что может быть что-то не так с координатами, но я не могу понять это, кто-то может мне помочь с этим? еще одна, в главном окне есть 3 кнопки, я хочу, чтобы они были зафиксированы в правом нижнем углу главного окна при перетаскивании и изменении размера главного окна, но я понятия не имею о схеме компоновки Интерфейсного Разработчика, есть ли хорошее решение ? Лучше быть реально полезным кодом с комментариями. Большое спасибо.

1 Ответ

1 голос
/ 22 декабря 2011

Вам нужно прочитать о системах координат. Ваш NSBox экземпляр является представлением, и запрос его borderRect вернет прямоугольник в координатах окна.

Вам нужнопрямоугольник в экранной системе координат, потому что все изображение на экране использует эту систему координат.Вы можете использовать этот метод для преобразования прямоугольника:

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