【问题标题】:Delphi Screen Dimensions with Fonts > 100% vs Actual Resolution字体 > 100% 与实际分辨率的 Delphi 屏幕尺寸
【发布时间】:2016-05-07 02:13:18
【问题描述】:

在 Windows 10、Delphi XE7 中,当字体大小设置为 > 100% 时,Delphi 的 screen[0].workarea.rect 返回反映字体缩放的尺寸。例如,屏幕 0 的显卡设置为 1920x1080,screen[0].workarea.rect.width 返回 1280(假设没有垂直任务栏等)。但是,由于字体缩放与 1280 是实际的显卡设置,我找不到以编程方式确定宽度返回为 1280 的方法。谁能告诉我如何执行以下一项或多项操作-其中任何一项都会为我提供区分可能性所需的信息:1)确定字体百分比是多少; 2)确定硬件分辨率是多少。

【问题讨论】:

  • 停止 dpi 虚拟化,你不需要问这个问题。

标签: windows delphi fonts


【解决方案1】:

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%

【讨论】:

  • 如果 dpi 虚拟化处于活动状态会怎样?
  • @David Heffernan 作者对 1280/1920 的困惑——它是 dpi 虚拟化的证据吗?
  • 所以我的回答中的屏幕分辨率部分对于这种情况并不实际。而且我怀疑什么是“真实”字体百分比值(如果存在的话......)
猜你喜欢
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 2012-06-25
相关资源
最近更新 更多