none
Best practices for RC bitmaps on high-resolution monitors?

    Question

  • Hi. We have an application that is over 10 years old.  It runs on Mac and Windows desktops, and has a GUI based on dozens of PNG bitmap resources (listed in our app RC file).  Some of our customers are starting to use high-resolution monitors, such as Apple Retina monitors.   When running with a high-resolution monitor, some OS software (display driver?) automatically "doubles" the bitmaps to enlarge them, so the windows/controls don't look too tiny on the screen.   That works fine, but it causes the bitmaps to look a bit blurry (each pixel in our PNG files becomes 2x2 pixels on the monitor).  Our customers are asking us to fix the blurriness.  

    We found a solution for OSX (online at  Online instructions for high-res ). The OSX solution is for apps to include _two_ copies of each PNG bitmap in their resources: one low-res and one high-res.  (The high-res bitmaps are 4x larger than the low-res).

    My question is:  What is the Windows best practices for handling high-resolution monitors such as Retina?   Should  we include two copies of each PNG bitmap in our RC?  Or do we include only the high-resolution bitmaps?  If we include only the high-res bitmaps:  will the display drivers know to "down-sample" when displaying on low-resolution monitors?


    Friday, March 03, 2017 3:01 AM

Answers

All replies

  • See:

    Writing DPI-Aware Desktop and Win32 Applications

    https://msdn.microsoft.com/en-us/library/windows/desktop/dn469266.aspx


    My portal and blog about VSX: http://www.visualstudioextensibility.com<br/> Twitter: https://twitter.com/VSExtensibility<br/> MZ-Tools productivity extension for Visual Studio: https://www.mztools.com

    Friday, March 03, 2017 5:19 AM
  • Carlos:  Thanks, that is exactly what I needed.   It looks like OSX and Windows are taking different approaches here:  It looks like Windows is more flexible:  permitting variable GUI scaling in response to any DPI (but at the cost of requiring all application sw to have some new logic to handle high-resolution); whereas OSX has its display drivers automatically enlarging the all GUI components by 2x linear (when hi-res monitor is detected) without any changes to application software. 
    Friday, March 03, 2017 2:49 PM
  • Hi friend,

    Glad to know your have resolved your issue, which could be helpful for others who have the same issue as yours.

    Sincerely,

    Oscar


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    Monday, March 06, 2017 2:47 AM
    Moderator