易语言组件字体属性的陷阱

作者:一年又一年 分类: 易语言 发布于:2019-2-25 22:12 ė240次浏览 60条评论

陷阱 1:

当你在易语言 IDE 的窗口属性栏里对组件设置字体字号时:

你选择了一款字体,字体大小为 9 号。

❌ 你以为易语言会做的事情:

  • 存字号,也就是存数字 9.

✔ 易语言实际做的事情:

  • 按照当前的 DC_DPI[1],计算并存这个字号所对应的逻辑大小[2],9 号在 96 DPI 下的逻辑大小是 -12 (0xfffffff4),在 101 DPI 下的逻辑大小 -13 (0xfffffff3).

[1] DC_DPI 指:对屏幕 DC 取 GetDeviceCaps 得到的 LOGPIXELSX/LOGPIXELSY[3].
[2] 逻辑大小的计算方式是 -MulDiv(fontSize, DC_DPI, 72),MulDiv(a, b, c) 等价于 四舍五入(a*b/c).
[3] 通常该值为 96,但笔者的桌面环境设置了自定义缩放,缩放比例是 105%,因为这个比例较小,Windows 不会对不支持 DPI 缩放的程序强行拉伸缩放,而是通过类似调整屏幕 DC 的 DPI 到 96*缩放系数(96*105%=101,即对应的 DPI 为 101),以使得这些程序能在不变模糊(blurred)的情况下,略微增大界面所呈现的字体大小(在此环境下,即便是不支持 DPI 缩放的程序,运行时所有线程默认的 DPI Awareness 都被自动设置为 DPI_AWARENESS_PER_MONITOR_AWARE).


陷阱 2:

当你的易语言程序在运行时对组件设置字体字号时:

.. To be continue.

0

♥ 若您欲转载敝站的原创内容,还请您附注出处及相应链接

发表评论

电子邮件地址不会被公开。必填项已用*标注

Ɣ回顶部