0

画像を表示するための Mac プラグインがあります。元々は Quickdraw で書かれており、Quartz に移行しようとしています。

私の現在の問題は起源です。QD では、原点は (賢明に) プラグインの四角形の左上隅です。Quartz では、プラグインの四角形の上部から 1 画面分下に表示されます (Firefox のボタンなどは含まれません)。これは、プラグインの四角形の真ん中のどこかで効果的にランダムです。

また、ブラウザー ウィンドウの描画部分のサイズを知る必要があることも意味します。ウィンドウの大きさはわかると思いますが、タブなどがどれくらいのスペースを占めているかはどうすればわかりますか? Mac はそれらのことを知りませんね。

関連して、Apple が原点を左下に配置した理由を知っている人はいますか? 私にはちょっとばかげているようです。

4

1 に答える 1

1

NSView を使用している場合は-isFlipped、反転した座標系に基づいて描画できるようにする YES を返す関数の実装を作成できます。

または、NSView を使用していないが生の CoreGraphics 描画を行っている場合は、次のように CTM を変更できます。

CGContextScaleCTM( context, 1.0, -1.0 );

これは、この Apple Q&A ドキュメントからのものです。

他の何かによって与えられた CGContextRef でこれを行っている場合は、最初に既存の CTM を保存し、完了したら復元する必要があります。

CGContextSaveGState( context );

// do your stuff here ...

CGContextRestoreGState( context );

ああ、原点が左下にあるのは、Quartz レンダリング システムが PDF グラフィック システムに基づいており、それ自体が PostScript に基づいており、原点が左下にあるためです。

于 2009-05-12T00:14:04.220 に答える