2016-05-07 5 views
0

Windows 10では、フォントサイズが> 100%に設定されているDelphi XE7では、フォントスケーリングを反映した寸法が返されます。 E.G.スクリーン0のグラフィックスカードが1920x1080に設定されている場合、screen [0] .workarea.rect.widthは1280を返します(垂直のタスクバーなどがないと仮定します)。しかし、フォントスケーリングのために幅が1280として返されることをプログラム的に判断する方法を見つけることはできません。実際のグラフィックスカードの設定は1280です。誰も私に次のうちの1つ以上を行う方法を教えてもらえますか?そのうちのどれか1つは、可能性を区別するために必要な情報を私に与えるでしょう。 2)ハードウェア解像度が何であるかを決定する。フォント> 100%対実際解像度のDelphi画面寸法

+2

停止DPI仮想化を持って、あなたが質問をする必要はありません。 。 –

答えて

0

GetDeviceCaps関数は、選択したデバイスコンテキストのインデックスで定義されたパラメータを返します。

のWindows 7で動作し、私のデスクトップ用の真フォントサイズの値を与える(96 dpiとは、デフォルト値は「小さいフォント100%」である)

dc := GetDC(0); 
    Memo1.Lines.Add(Format('hor res %d', [GetDeviceCaps(dc, HORZRES)])); 
    lp := GetDeviceCaps(dc, LOGPIXELSX); 
    Memo1.Lines.Add(Format('logx %d percents %d%%', [lp, 100 * lp div 96])); 

    hor res 1280 
    logx 120 percents 125% 
+0

dpi仮想化がアクティブな場合はどうなりますか? –

+0

@David Heffernan著者の1280/1920混乱 - dpi仮想化の証拠ですか? – MBo

+0

はいそれの明確な証拠です –