2010-11-19 14 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さんの回答が正しいです。

もっと説明が必要な人には、私の考えを追加します。

私はプラグインプロセスには実際のOSウィンドウを持たないCGContextがあると思います。ブラウザプロセスはウィンドウが必要ですが、プラグインプロセスは図面データをブラウザプロセスに転送するだけなので、プラグインプロセスのCGContextには場所がありません。それはちょうどメモリバッファかもしれません。

ありがとうsmorgan。