Windows: 如何在高DPI下测试UI?

18
我想测试我的应用程序对高dpi设置的反应。我不仅指120dpi,我想测试更高的dpi设置,例如:
  • 150dpi
  • 300dpi
  • 600dpi
  • 1000dpi
  • 1200dpi
我的开发机器的显卡无法达到需要的分辨率来实现300dpi(或者甚至是150dpi)。
假设界面被设计为适合具有768行的显示器(例如1024x768),那么更高dpi设置所需的分辨率将是:
             Normal      Wide-Screen         Frame Buffer
  dpi     Resolution    Resolution    Zoom    Size (MiB)
=======  ============  ============  ======  ============ 
   96     1024 x  768   1280 x  768    100%      3.75     
  113     1200 x  900   1440 x  900    117%      4.96     
  120     1280 x  960   1536 x  960    125%      5.63
  131     1400 x 1050   1680 x 1050    137%      6.73
  150     1600 x 1200   1920 x 1200    156%      8.70
  300     3200 x 2400   3840 x 2400    313%     35.26
  600     6400 x 4800   7680 x 4800    625%    140.63
1,000    10667 x 8000  12800 x 8000  1,042%    390.63

需要的分辨率相当高,即使在150dpi时也是如此。
我想到了一种方法,即在VirtualPC上运行软件,虚拟机运行6400x4800 - 然后使用VNC连接到虚拟机。它可以缩放内容以适应我的显示器。虽然我失去了高dpi显示的保真度,但至少我可以查看它,与之交互(即测试它)。但是,VirtualPC模拟的s3 Trio 32/64视频卡最高只能达到1600x1200(即150dpi)。
我还想知道是否有一些虚拟视频卡驱动程序,可以像视频卡一样工作 - 能够支持高分辨率,但在我的本机桌面上显示为缩放版本。
有什么想法吗?

参考资料


1
你为什么想要这样做?需要提高 DPI 的应用领域是什么?有支持该分辨率的显示器吗? - mmr
1
我想成为一名优秀的开发者并缴纳我的税款 (http://blogs.msdn.com/oldnewthing/archive/2005/08/22/454487.aspx) - Ian Boyd
1
因为我们没有更高分辨率的显示器,所以软件无法很好地支持它们;而软件无法很好地支持它们,因为我们没有高分辨率的显示器。 - Ian Boyd
4
有多少人支持120dpi?有多少人尊重Windows的字体偏好设置?一旦我正确地完成了支持120dpi或9pt字体的工作,它应该会自动支持所有内容。我想看到600dpi,这样我就可以立即看到我漏掉了什么。不要被更高的数字吓到。 - Ian Boyd
1
因为在测试缩放比例为800%时,更容易发现那些在125%缩放比例下没有被正确缩放的元素。 - James Johnston
显示剩余2条评论
5个回答

4

我刚刚使用VirtualBox尝试了一下,可以报告如下:

  • 在Windows XP主机上,我无法超过大约2000 x 2000,指定这些值会简单地切换回800x600。
  • 在Ubuntu 11.04主机上,我至少可以达到4000x4000。

自从Windows Vista引入了新的驱动程序模型,如果Vista/Windows 7也支持这些高分辨率,我不会感到惊讶。 不幸的是,我没有Vista或Windows 7主机来测试它。

必要的步骤如下:

  • Switch to scaled display mode (using Host-C, where Host defaults to the right Ctrl key). this will draw a scaled version of the host display, so there's no need to use the RDP-trick. It also ensures that limited window size won't force the VM to reduce the screen resolution
  • Use the command-line tool VBoxManage to specify the resolution hint:

    VBoxManage controlvm "VM Name" setvideomodehint 4000 4000 32
    

我必须先启用缩放模式,然后发出 VBoxManage 命令。一旦我这样做了,Gnome 就让我设置200%的比例因子,使其可用。 - tresf

4
如果您的应用程序在96、120、144、150 dpi下的布局行为相同,那么我认为没有必要测试更高的DPI,因为您已经测试过它在不均匀dpi增量下的良好工作。

实际上,市场上已经有很多高DPI友好的设置,比如1680x1050 15.4英寸或1920x1080 16英寸显示器的笔记本电脑,在120dpi下已经显示出像素依赖性问题,并且在96dpi下使用起来非常不舒服,所以支持更高密度的显示是有价值的。祝您好运!

编辑:我一直在思考。这可能不是很实时,但也许您可以尝试处理窗口中的WM_PRINTWM_PRINTCLIENT消息,并将其打印到文件中,或者至少尝试使用打印机设置显示打印预览?突然间我们就至少有了300dpi。只是一个想法。


2
这样做的真正动机是让同事们明显地看到:a)为什么你应该支持高dpi,b)你在哪里搞砸了。我将我的PC运行在非96 dpi下,但只有我一个人这样做。我需要让失败变得非常明显 - Ian Boyd
1
人们反对使用高分辨率小屏幕的观念存在问题,因为他们担心字符会太小,所以对高dpi的需求不像应该的那么大。目前,笔记本用户是高dpi的主要目标,因为他们的显示屏很小,分辨率“不成比例”。桌面显示器仍然适合96dpi的大小,因此我担心在人们看到在240dpi 22英寸显示器上出现问题的应用程序之前,没有好的现实论据支持高dpi。 - macbirdie

3
你需要一张支持1920 x 1200的显卡和一个支持这个分辨率的显示器。许多用户都有这些设备,如果你是一个开发者,使用它们会非常舒适。如果你只有1600 x 1200的显示器,而不想花钱购买新的,则可以继续使用。除此之外,除非你在为皮克斯工作,否则我认为没有必要。

1
不是我的钱要花。让我工作的地方的任何人关心dpi设置就像拔牙一样困难 - 这也反映在OP的评论中。 - Ian Boyd
微软表示:在192 DPI显示设置下进行测试是可选的,但它可以让您确定您的应用程序有多“未来化”。对于Windows Vista应用程序,我们建议您解决至少144 DPI配置的问题。 - Robert Harvey
我可以运行的最高分辨率是131dpi。 - Ian Boyd

1

正如你已经知道的那样,无论是NVidia还是ATI显示卡都允许你创建自定义分辨率,但即使过去一百万年也不可能达到12800 x 8000。仅仅为了让你了解它需要多少内存...它需要比1080(1920x1200)视频卡多45倍的内存。然而,你可以使用大型装置并连接多张卡,但即使如此,12800 x 8000仍然最适合在LINUX下使用定制硬件和驱动程序。


我希望得到更虚拟的东西 :) - Ian Boyd
1
1997年:我听说一些GGI工作站的显示器可以达到1600x1200分辨率!简直是惊人!!我永远不用担心支持这些了! - Ian Boyd
1
Ian,我认为在不久的将来,由于需要在不同光照条件下获得更高的清晰度以及希望从数字显示器上实现纸张般的质量,我们很可能会看到更高的分辨率...然而,12800 x 8000 x 32位色彩=每秒约14.5 GB的数据刷新率为75hz。这就是需要传输的数据量。即使仅存储原始屏幕分辨率也需要大约200MB的缓冲区。 - Keith Adler
我刚在NewEgg上浏览显示器。显示器的分辨率在增加,但尺寸也在增加。它们并不是更高密度,而是变得更大了。 - Ian Boyd
@Nissan Fan - 12,800 x 8,000 x 32位每像素 = 390 MB 而非200 MB。看起来你使用了每像素2字节而不是4字节。数据速率可能为60 Hz(LCD通常最高为60)。因此,390 MB * 60Hz = 22.9 GB /秒。 - Will Bickford
1
我不会说是“一百万年”…… 12800x8000 大约相当于 12 个 4k 显示器。下一个高清版本是 8k,已经有支持硬件了,这大约相当于 3 个 8k 显示器,我相信这将在未来十年内成为常见的工作站布局。所以不是“一百万年”,但可能需要 十年 左右。 - J...

0

Windows不会检查您的显示器是否实际上符合您配置的DPI,因此只需连接尽可能大的显示器并开始切换设置即可。

我很好奇为什么您想要测试如此高的分辨率,即超过192。如果您确实需要如此高的分辨率,那么肯定可以访问将运行它的硬件?


使用如此高的分辨率的真正动机是为了轻松地查看是否有遗漏的内容,并向同事指出哪些内容被遗漏,以及为什么会被遗漏。 - Ian Boyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接