Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows: How to test UI under high-dpi?

i want to test how my application reacts to high-dpi settings. i don't just mean 120dpi. i want to test higher dpi settings, such as:

  • 150dpi
  • 300dpi
  • 600dpi
  • 1000dpi
  • 1200dpi

My development machine's video card cannot do the resolutions required to have 300dpi, (or even 150dpi for that matter).

Assuming the interface is designed to 'fit' on a display with 768 lines (e.g. 1024x768), the resolution required for the higher-dpi settings would be:

             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

The required resolutions get pretty high, even at 150dpi.

i was thinking of something along the line of a running the software on a VirtualPC, with the virtual machine running 6400x4800 - and then use VNC to connect to the virtual machine. It could then scale the content to fit my monitor. Although i lose the fidelity of a high-dpi display, i can at least look at it, interact with it (i.e. test it). But the s3 Trio 32/64 video card that VirtualPC emulates tops out at 1600x1200 (i.e. 150dpi).

i also wondered if maybe there is some virtual video card driver out there, that can act like a video card - capable of high-resolution, but displays itself scaled on my native desktop.

Any ideas?


References

  • MSDN - How to Ensure That Your Application Displays Properly on High-DPI Displays
  • MSDN: Writing High-DPI Win32 Applications
  • MSDN: Tutorial: Writing High-DPI Win32 Applications
  • MSDN - Pixel Density and Usability
  • Engineering Windows 7 Blog: Follow-up on High DPI resolution
  • Greg Schechter's Blog - High DPI Support in Windows Vista Aero
like image 762
Ian Boyd Avatar asked Jul 14 '09 17:07

Ian Boyd


People also ask

How do I know high DPI?

Select Display > Change the size of text, apps, and other items, and then adjust the slider for each monitor. Right-click the application, select Properties, select the Compatibility tab, and then select the Disable display scaling on high DPI settings check box.

Does override high DPI scaling behavior increase FPS?

Through 'Properties', go to 'Compatibility'. Here, you will have to untick an option which says 'Disability Full-screen optimization' and tick on 'Override High DPI Scaling behavior'. As you select 'Apply', there will be an instant boost in your gaming experience and you get more FPS.


1 Answers

If your app's layout behaves the same at 96, 120, 144, 150 dpi then I think there's no need to test it for even higher DPI, since you will have already tested that it works well for uneven dpi increments.

Actually there are many setups high-dpi-friendly already on the market, like 1680x1050 15,4" or 1920x1080 at 16" displays in notebooks, which at 120dpi already show pixel-dependency problems and are pretty uncomfortable to work with at 96dpi already so working on higher-density display support is valid. Good for you!

Edit: I've been thinking. That may not be very real-time, but maybe if you tried handling WM_PRINT or WM_PRINTCLIENT messages in your windows and printed it to a file or at least tried to show a print preview of them using printer settings? Suddenly we're in at least 300dpi. Just an idea.

like image 161
macbirdie Avatar answered Sep 23 '22 13:09

macbirdie