您是否在高分辨率屏幕和非标准/高对比度配色方案上进行测试?
我在我的大多数机器上使用非默认的 Windows 配色方案,并且有一台配备 124 DPI 屏幕的笔记本电脑(Windows 设置为该屏幕)。
我测试甚至每天使用的许多程序似乎都存在问题,例如显示非标准尺寸的控件、截断的 UI 元素、不可读的文本等等。 范围从有点烦人到(几乎)无法使用。
现在我觉得这些问题很多都是没有必要的。 在高分辨率屏幕上以几种配色方案运行简单的测试就会显示它们,其中一些甚至非常容易纠正(例如始终使用 clWindow、clWindowText 和 clBtnFace 而不是 clWhite、clBlack 和 clSilver)。 其中一些更难,例如适当的控制尺寸。
所以我的问题是:您是否尝试遵循 UI 指南中有关系统颜色、UI 元素的大小和间距以及字体大小和外观的建议? 测试是否符合这些要求是您的质量保证流程的一部分吗? 即使大多数 IDE(在我的例子中是 Delphi)都有面向像素的设计器,您是否尝试以对话框单元而不是像素来布局表单?
[编辑]:睡后重新阅读本文时,我注意到这个问题可能看起来像是邀请进行毫无结果的讨论。 这并不是说,我肯定对帮助我创建符合 UI 界面指南的应用程序的工具感兴趣,我觉得 Delphi 在这个领域让我有点失望。 另请参阅我自己的答案。
I use a non-default Windows colour scheme on most of my machines, and have a laptop with a 124 DPI screen, which Windows is set to.
A lot of programs I tested or even use daily seem to have problems with that, showing for example non-standard sizes of controls, cut-off UI elements, unreadable text and so on. There is the whole range from slightly annoying to (nearly) unusable.
Now I feel that a lot of these issues are unnecessary. A simple test run on a high-resolution screen in a few colour schemes would show them, some of them are even very easy to correct (like always using clWindow, clWindowText and clBtnFace instead of clWhite, clBlack and clSilver). Some of them are harder, like proper control sizing.
So my question is: Do you try to follow the recommendations in the UI guidelines regarding system colours, sizing and spacing of UI elements, and font sizes and faces? Is testing for compliance to them part of your QA process? Do you even try to lay out your forms in dialog units instead of pixels, even though most of the IDEs (Delphi in my case) have pixel-oriented designers?
[EDIT]: On re-reading this after sleeping I notice that this question may look like an invitation for fruitless discussion. It is not meant that way, I'd definitely be interested in tools to help me create applications that conform to the UI interface guidelines, an area where I feel Delphi is letting me down a little. See also my own answer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我绝对不会。 我更愿意花时间来改善许多人的体验,而不是少数使用非标准 Windows 设置的人。 我通常做的一些事情仍然应该解决其中一些问题:
但我当然不这样做不要花时间设置具有奇怪分辨率和颜色的测试计算机,或者更糟糕的是,更改我的开发盒来使用它们(这会搞砸很多事情,再次需要时间才能正确重置)。
如果付费客户报告非标准设置问题,则是否会解决这些问题取决于客户。 如果他订购 100 个许可证,他的机会就很大。 如果他因为视力障碍而使用这些设置,那么他的机会就很大。 如果他把它作为要求的一部分,我就会做,但要收取额外的工作费用。
I definitely don't. It costs time that I prefer spending on improving the experience of many rather than the few who use non-standard windows settings. A few things I usually do, which should still fix some of these issues:
But I certainly don't take the time to set up test computers with odd resolutions and colors, or even worse, change my development box to use them (which will screw lots of things that again take time to reset properly).
If a paying customer reports problems with non-standard settings, it depends on the customer whether they will be addressed. If he orders 100 licenses, his chances are good. If he uses these settings because he is visually impaired, his chances are good. If he makes it part of the requirement, I will do it, but charge for the additional work.
如今,很多软件在非标准 DPI 下无法正常工作,我认为不值得尝试修复它。 许多应用程序的故障排除常见问题解答只是指导用户针对相关问题切换到正常字体大小。 微软承认第三方软件缺乏适当的 DPI 支持,并重新设计了 Windows Vista 中的显示缩放方法,其中所有 GDI 操作都在较低级别上缩放,而不是依赖于了解 DPI 设置的应用程序。
最终答案:这取决于您的软件的受众。 如果您的软件可能会被残疾用户使用,那么这可能是值得的。
Today, so much software doesn't work properly at a non-standard DPI that I don't think it's worth trying to fix it. The trouble-shooting FAQs for many applications just instruct users to switch to a normal font size for related problems. Microsoft acknowledged lack of proper DPI support in 3rd-party software and redesigned the display scaling methods in Windows Vista, where all GDI operations are scaled on a low level instead of relying on applications being aware of the DPI setting.
Final answer: it depends on your software's audience. If your software is likely to be used by disabled users, it might be worth the effort.
除了为标准颜色使用正确的颜色常量之外,我还为需要在高 DPI 屏幕上内部使用的应用程序或客户可能需要的应用程序投入了一些额外的精力。
我有一个带有帮助函数的单元,用于确定正确的尺寸和放置边距,它根据 UI 指南中给出的默认 GUI 字体和对话框单元中的标准值来计算这些值,并带有辅助函数来计算最大宽度/高度控件数组、放置控件等等。 对于固定大小的表单和对话框,我在使用 GNU gettext 翻译文本后计算控件的位置,对于可调整大小的表单,我在 OnResize 处理程序中执行此操作。
这给出了良好的结果,但是很耗时。 我想要类似 wxWidgets sizer 功能 的功能,它可以自动调整大小一次设置控件的最小尺寸。 不过,我从未在 Delphi 中见过类似的东西。
Apart from using the proper colour constants for standard colours I invest some extra effort for applications that we need to use internally on high DPI screens, or where customers may need this.
I have a unit with helper functions for determining proper sizes and placement margins, which compute these from the default GUI font and the standard values in dialog units as given in the UI guidelines, and with helper functions to compute the maximum width / height of an array of controls, place controls, things like that. For fixed size forms and dialogs I calculate the placement of controls once after translating their text with GNU gettext, for resizable forms I do this in an OnResize handler.
This gives good results, is however time-consuming. I would like to have something like the wxWidgets sizer functionality, which automates resizing once the minimum size of a control is set. I have never seen something similar for Delphi, though.
我偶尔会自己测试一下大字体,因为我的 Vista 笔记本电脑设置为大字体。 颜色,没有那么多,但我很少在控件上指定颜色。
然而,适当的调整大小是相当困难的。 我通常将表单比例设置为 false,这样它们就不会错误地调整大小。
有一些用于自动调整表单大小的工具。 我确实研究过它们,但从未抽出时间来正确测试它们:
TFormResizer
ElasticForm - 讽刺的是(给定组件的区域)此页面中的大部分文本都不会显示在 Chrome 中...
JVAutoFormSize(在 JVCL 中 - 从我读到的内容来看似乎不是很有用)
I occasionally test it myself for large fonts, because my Vista laptop is set to Large Fonts. Colors, not so much, but I rarely specify colors on controls.
However, proper resizing is pretty hard. I usually set Forms scale to false, so as that they won't resize wrong.
There are a few tools for auto-resizing forms. I did look into them, but never got around to testing them properly:
TFormResizer
ElasticForm - ironically (given the component's area) most of the text in this page won't show up in Chrome...
JVAutoFormSize (in JVCL - doesn't seem to be very useful from what I read)