Как получить глобальные (экран, устройство) координаты с CGContext? - PullRequest
0 голосов
/ 19 ноября 2010

Я пытаюсь создать плагин для браузеров в Mac OSX.

Я получил CGContext из процесса браузера.

Так что я могу рисовать с ним.

Что мне нужно сделать, так это создать окно для обработки событий, кто-то посоветует мне этот удивительный сайт:)

Я могу легко сделать прозрачное окно, но могу переместить это окно в правильное положение.1009 *

Я точно знаю размер окна, но могу определить происхождение окна.

Единственное, что я получил, это CGContextRef.

Я попробовал это.

NSRect rect = [mywindow frame];

CGPoint origin;
origin.x = rect.origin.x;
origin.y = rect.origin.y;

CGPoint globalOrigin = CGContextConvertPointToDeviceSpace(cgContext, origin);

if (globalOrigin.x != origin.x || globalOrigin.y != origin.y) {
    NSPoint newPoint; 
    newPoint.x = globalOrigin.x;
    newPoint.y = globalOrigin.y;
    [mywindow setFrameOrigin:newPoint];
}

Но не повезло.Он вернул значение, которое я дал ему

Любой совет?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2010

Сморган ответ правильный.

Для тех, кому, возможно, понадобятся дополнительные объяснения, я добавлю свое мышление.

Я думаю, что процесс плагина имеет CGContext, который не имеет реального окна OS.потому что процессу браузера нужно окно, а процесс плагина просто передает данные чертежа в процесс браузера, поэтому CGContext процесса плагина НЕ имеет местоположения.Это может быть просто буфер памяти.

Спасибо, сморган.

0 голосов
/ 28 ноября 2010

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

...