ピクセル=ポイント×96/72
インチ変換計算が必要で72で割ってます。問題は96の部分。
'ディスプレイ上におけるA1の左上の位置を取得する。ピクセル値。 x = ActiveWindow.PointsToScreenPixelsX(0) y = ActiveWindow.PointsToScreenPixelsY(0) 'A1の左上からオブジェクトの位置を取得。ポイント値。 xx = オブジェクト.Left yy = オブジェクト.Top 'ディスプレイ上のオブジェクトの位置。ピクセル値。 xxx = (xx * 96 / 72) + x yyy = (yy * 96 / 72) + y
私のパソコンはディスプレイの表示設定が125%推奨(120dpi)になっておりまして、、、計算に96を使うと正しい位置が取得できませんでした。実行するパソコンごとにディスプレイの拡大率、DPI値を確認する必要がある。
ディスプレイ拡大率を100%に変更すると位置が取得できた!拡大率125%でDPI値120でも位置が取得できた!
DPI値 | 拡大率 |
---|---|
96 | 100% |
120 | 125% |
144 | 150% |
192 | 200% |