winforms – 每个监视器DPI感知Windows系统映像列表
如何检索给定DPI的系统映像列表?
当应用程序是系统DPI感知时, handle = SHGetFileInfo(L"",&fileInfo,sizeof(fileInfo),SHGFI_SYSICONINDEX | (large ? SHGFI_LARGEICON : SHGFI_SMALLICON)); 但是,对于每个监视器的DPI感知,这还不够,因为应用程序可以在不使用系统DPI的监视器上运行(或者应用程序可以有多个窗口,每个窗口在不同的监视器上,具有不同的DPI). 例如,在168 DPI(175%变焦)监视器上,使用标准96系统DPI,您可以获得小的未缩放16×16图标: 所以我希望,SHGetFileInfo(或类似的)有一个DPI感知变体,其他功能的DPI识别变体的方式如下: >
作为一个快速解决方案,我最终使用
SHGetImageList ,正如@MickyD所建议的那样.
如功能文档中所述(以及@JonathanPotter建议):
因此,我使用SHGetImageList通过调用0..SHIL_LAST来收集所有可用的系统映像列表大小. 对于每个返回的图像列表,我使用 然后,当特定DPI需要图像列表时,我选择最接近的可用尺寸. 一个明显的缺点是,在具有高系统DPI但具有一个低DPI监视器的多监视器系统上,无法为低DPI监视器检索合理大小的小图标. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 让DNS服务器支持泛域名解析
- 是否有类似Microsoft Windows Server DFS for Linux的东西?
- 适用于Windows 7 64位操作系统的MYSQL安装程序?
- windows-server-2008 – 在Windows Server 2008 R2上启用下
- windows-server-2008 – 无法连接到SSTP VPN – 无法检查吊
- 在Windows中以提升的提示输入不带密码的其他用户
- windows – 如何从断开连接的终端服务会话中获取IP地址
- 如何在Windows中没有控制台窗口的情况下从C应用程序中删除文
- winapi – 何时(以及如何)布置Win32窗口的子项以响应调整大
- 如何在Windows Mobile 6下将Flash游戏嵌入到Windows Forms