2010-11-19 59 views
0

我試圖爲Mac OSX中的瀏覽器製作一個插件。如何獲得CGContext的全局(屏幕,設備)座標?

我從瀏覽器進程中獲得了CGContext。

所以我可以畫它。

我要做的是讓事件處理有人建議我在這個驚人的網站:)

我可以做一個透明的窗口,容易,但我可以移動窗口適當位置的窗口。

我知道窗口的大小,但我可以確定窗口的來源。

我唯一得到的是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]; 
} 

但沒有運氣。它返回了我給它的價值

有什麼建議嗎?

在此先感謝。

回答

0

您在NPAPI插件中獲得的CGContext不一定與任何窗口關聯,因此無法將CGContext映射到屏幕上的某個位置。

0

smorgan的回答是對的。

對於需要更多解釋的人,我會加上我的想法。

我認爲插件進程有CGContext,它沒有真正的os窗口。因爲瀏覽器進程需要窗口而插件進程只是將繪圖數據傳送給瀏覽器進程,所以插件進程的CGContext沒有位置。它可能只是內存緩衝區。

謝謝smorgan。