是否可以在Windows中检索字体缩放?

时间:2017-08-23 20:14:59

标签: winapi firemonkey delphi-10.1-berlin

尝试更改我的FMX表单的尺寸以模拟' FullScreen'模式,但是当用户的设置具有更大的缩放比例时,使用屏幕尺寸会发生逆火,因为整个表单变得比屏幕大。

如何检索缩放值以便我可以相应地调整表单大小?

编辑: 这是一个小小的片段,显示了我对这个问题的意图以及它是如何解决的。谢谢你的时间和帮助。

Dim xsite As ServerXMLHTTP60
Set xsite = New ServerXMLHTTP60

On Error Resume Next

xsite.setTimeouts 0, 60000, 30000, 600000

xsite.Open "POST", pServerURL & func, False
aErr = Array(Err.Number, Err.Description)
On Error GoTo 0
If 0 = aErr(0) Then 'No error creating the link
    xsite.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    'Set request header with Base64-encoded username/password
    xsite.setRequestHeader "Authorization", "Basic " & EncodeBase64(UserName & ":" & Password)
    On Error Resume Next
    xsite.send "xmlData=" & URLEncode(xmldata)
    aErr = Array(Err.Number, Err.Description)
    On Error GoTo 0

    Debug.Print aErr(0)
    Debug.Print aErr(1)
End If

1 个答案:

答案 0 :(得分:0)

当您致电EnumDisplaySettings时,生成的DEVMODE结构包含dmYResolution字段中的DPI设置。请注意,将NULL作为设备名称传递给EnumDisplaySettings将仅获取一个屏幕的信息,在多监视器系统上,您应该枚举所有显示设备。

您也可以在设备上下文中致电GetDeviceCaps,然后查询LOGPIXELSXLOGPIXELSY

DPI对应于字体缩放,如下所示:

  • 100%= 96 dpi
  • 125%= 120 dpi
  • 150%= 144 dpi
  • 200%= 192 dpi

有关更多信息,最好参考the MSDN article on DPI-related APIs