Tom*_*jor 8 delphi vcl c++builder vcl-styles
目前我正在测试启用VCL样式的应用程序的各个方面.
我注意到,当Windows缩放高于默认的96 dpi/100%时,VCL表单的图标和标题栏文本太大 - 两者都要靠近 - 请参阅附带的屏幕截图.对于200%或250%的更高标度(例如在4K显示器和Windows 10上使用),尤其如此,但即使缩放为144 dpi/150%,问题也已经可见.
对于RAD Studio提供的所有样式都是如此.通过项目设置启用清单的高Dpi感知.如果我在应用程序中禁用VCL样式,则图标和标题栏文本的大小正确.
我在这里错过了什么吗?如果启用显示缩放,开箱即用的样式是否应该没有开箱即用的显示错误?或者是否有一些设置我可以调整以解决这个问题.
谢谢,
Dal*_*kar 11
VCL样式不能正确支持高DPI缩放.
如果您使用VCL样式,则应从应用程序清单中删除高DPI感知.
QP报告请求对VCL样式的一般高DPI支持: VCL样式在高DPI配置下无法正确扩展
NC区域的相关QC报告:在高DPI下,样式表格的非客户区域缩放不正确
好的,这是我针对视觉错误的解决方案,请参阅随附的屏幕截图。我修复了 Vcl.Forms.pas 中的 3 个地方。
第一个修复(注释为 // Title bar fix 1)解决了在具有 VCL 样式应用程序的默认 96dpi Windows 上即使没有缩放也无法正确绘制图标的问题。我可以根据 James Johnston 的有关 WM_GETICON、ICON_SMALL2 的发现来解决此问题, /sf/answers/2454753661/ 谢谢 James!
另外两个修复解决了启用显示缩放后图标绘制太大以及图标与标题栏文本之间的距离太小的问题。这些是代码中用 // 标题栏修复 2 和 3 注释的修复。GetDpi 只是当前 dpi 值的 getter,该值是我从应用程序内的 C 源代码获取的。
结果并不完美,但目前已经可以了,这样 VCL 风格的应用程序至少在扩展环境下是可以接受的。
感谢大家的意见。
归档时间: |
|
查看次数: |
1079 次 |
最近记录: |