TFont尺寸/高度问题在不同的DPI设置上

时间:2015-12-05 22:10:24

标签: delphi delphi-10-seattle

这是问题所在。 TFont对象以96 DPI分辨率保存(流式传输到文件),Size属性设置为 9pt 。然后DPI更改为192,当反序列化对象时,其Size属性值变为 5pt

环境:app是一个VCL表单应用,标记为DPI感知(“true / PM”)。 Form的Scaled属性不会影响行为,因为TFont对象是使用WriteComponent / ReadRootComponent函数在表单对象之外保存/加载的。

使用测试应用程序说明问题的屏幕截图。该应用程序仅将TFont保存到文件中,“加载”按钮将其读回并在备忘录中显示加载字体的大小/高度。

屏幕截图1:程序在96dpi系统上启动,字体为Tahoma 8pt,保存到文件并加载。一切都很好。

enter image description here

序列化字体保存在文件中:

object TTest
  F.Charset = DEFAULT_CHARSET
  F.Color = clWindowText
  F.Height = -11
  F.Name = 'Tahoma'
  F.Style = []
end

Screesnhot 2:在192dpi系统上启动,加载序列化字体,其大小变为4pt。 enter image description here

Delphi保存Height属性,并且正在根据Height计算Size,从而产生更小的字体......

有没有办法,而不是手动缩放大小(NewHeight = Height * SystemDPI / 96),以使Delphi保留“pt”字体大小而不管DPI设置如何?我觉得我在这里错过了什么...

0 个答案:

没有答案