如何撰寫高DPI的視窗程式
當客戶年紀稍長,都會自行把WINDOWS的DPI提高
通常是提高到125%,雖然我們的建議是由我們來處理字形的放大縮小
會比較妥當,但也沒法滿足客戶喜歡自行處理的樂趣
參考資料如下:
Writing High-DPI Win32 Applications
http://msdn.microsoft.com/en-us/library/dd464660%28VS.85%29.aspx#dpi_virtualization
DPI Virtualization
http://codingjames.blogspot.com/2010/02/dpi-virtualization.html
有用到RegistryKey時候要
using Microsoft.Win32;
bool IsDpiVirtualization()
{
// open the key of Desktop Window Manager
RegistryKey k = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\DWM");
if (k != null)
{
// get the value if it exists
if ((int)k.GetValue("UseDpiScaling", 0) == 1)
{
k.Close();
return true;
}
k.Close();
}
return false;
}
通常是提高到125%,雖然我們的建議是由我們來處理字形的放大縮小
會比較妥當,但也沒法滿足客戶喜歡自行處理的樂趣
參考資料如下:
Writing High-DPI Win32 Applications
http://msdn.microsoft.com/en-us/library/dd464660%28VS.85%29.aspx#dpi_virtualization
DPI Virtualization
http://codingjames.blogspot.com/2010/02/dpi-virtualization.html
有用到RegistryKey時候要
using Microsoft.Win32;
bool IsDpiVirtualization()
{
// open the key of Desktop Window Manager
RegistryKey k = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\DWM");
if (k != null)
{
// get the value if it exists
if ((int)k.GetValue("UseDpiScaling", 0) == 1)
{
k.Close();
return true;
}
k.Close();
}
return false;
}
留言