GDI+ を使用してマウス座標をワールド座標に変換するにはどうすればよいですか? または、GDI+ を使用して描画された SVG 形状のバウンディング ボックス (またはそれ以上) の古い skool 領域を取得しますか?
ともかく。私は SVG コードを探していて、見つけました:
http://development.mwcs.de/svgimage.html
これは、実際に SVG で動作する最初の Delphi コンポーネントですが、脱線します。
このコンポーネントは、GDI+ を使用して円、曲線などを表示します
。GDI+ はマトリックスを使用して、ワールド座標、回転、歪みを画面座標に変換します。
この部分はわかります。行列の乗算を使用して変換を行います。
問題は
、マウスカーソルを閉じた形状の上に置いた場合です。
- マウスのスクリーン ポイントをワールド ポイントに変換して、画面上に描かれた円にヒット テストできるマトリックスをどこから取得すればよいでしょうか。
これらすべての GDI オブジェクトの中から選択できるマトリックスが非常に多くあります。 - ビットマップへの描画とカーソル下の魔法の色のテストについて教えてください。これは私が探しているものではありません。
- マトリックスのチェーンがある場合、スクリーン座標がワールド座標に正しく導かれるように、それらを正しい (反転した?) 順序でトラバースするにはどうすればよいですか?
つまり
、SVG 画像から読み込まれた形状は、マトリックスによって画面座標に歪められるプリミティブです。画面座標から座標に逆算して、図形の中にいるかどうかを確認するにはどうすればよいですか。
現在の形状を知る必要があることに注意してください
。SVG 画像の設定方法により、各形状には ID があり、それを使用して、マウスでヒットした領域を確認したいと考えています。
編集
あるいは
- 画面座標で形状ごとに境界四角形を取得して、それに対してマウス座標を確認できますか?
- 画面座標で PtInRegion を実行できる古い skool GDI リージョンを取得できますか。
これらすべての歪んだパスで自分の道を見つけるのを手伝ってくれることを願っています:-)。