質問

私は過去にリンクされてきました これ WPFピクセル座標をデスクトップのものに変換する際の同様の質問に対する回答ですが、関連する数学を理解しているかどうかはわかりません。

Astonish 'Answerは、「WPFユニットあたりのピクセル= constantWpfunitサイズ *モニターDPI;」と述べています。そして、その「一定のWPFユニットサイズは1/96です。」

私の場合、私はデスクトップのスクリーンショットを撮った後に作成したビットマップオブジェクトから作成されたグラフィックオブジェクトからDPIを取得しました。

Graphics g = Graphics.FromImage(bitmap);
float WpfUnit = (1 / 96) * g.DpiX;

グラフィックオブジェクトから返されるDPIが96であることを考えると、私は残されています

WpfUnit = (1 / 96) * 96 = 1

ただし、WPFunitは、未知の(私にとって)理由で0として出てきています。私がこれを修正するために見ることができる唯一の方法は言うことです

if(WpfUnit == 0) WpfUnit = 1;

また、リンクされた答えで提案されているようにWPFunitを掛けた場合、高さの値と最高値を掛けた場合、1を掛ける以外に何もしていないため、問題は実際には問題を修正しません。

したがって、結論として、私はまだWPFピクセルをデスクトップピクセルに変換することに固執しています。これに関する助けは大歓迎です。

役に立ちましたか?

解決

内蔵はどうですか PointToscreenPointfromscreen 方法?それとも私は何かが足りませんか?

他のヒント

WPFunitは、1/96で整数数学を行っているため、ゼロとして登場しています。これらの数値をフロートとして明示的に宣言します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top