You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win32 C++中Toast通知图片尺寸与DPI缩放问题咨询

Toast通知图片缩放与DPI适配问题解答

一、图片自动缩放与尺寸匹配规则

1. 非DPI感知应用

  • 系统会自动缩放你指定的48x48 appLogoOverride图片,但因为应用未声明DPI感知,系统会默认以**96 DPI(100%缩放比例)**为基准进行缩放,在高DPI屏幕下容易出现模糊。
  • 不支持通过命名规则匹配不同尺寸的图片,系统只会使用你指定的单张图片进行缩放处理。

2. DPI感知应用

  • 系统会根据当前屏幕的实际DPI值自动缩放48x48的图片,保证显示清晰度。
  • 支持通过资源命名规则匹配对应尺寸的图片:比如你提供appLogo.scale-150.png(对应150%缩放)、appLogo.scale-200.png等命名的资源文件,系统会自动根据当前DPI选择最匹配的版本,无需手动指定具体文件。

二、非DPI感知应用获取实际DPI值的方法

如果需要手动处理图片缩放,可通过以下Win32 API获取目标屏幕的实际DPI:

  • 使用GetDpiForWindow(需Windows 10 1607及以上版本):传入应用窗口句柄,直接获取该窗口所在显示器的DPI值。示例代码:
HWND hWnd = /* 你的应用窗口句柄 */;
UINT dpi = GetDpiForWindow(hWnd);
  • 若没有窗口句柄,可使用GetDpiForMonitor:先获取目标显示器句柄,再读取对应DPI。示例代码:
HMONITOR hMonitor = MonitorFromWindow(NULL, MONITOR_DEFAULTTOPRIMARY);
UINT dpiX, dpiY;
GetDpiForMonitor(hMonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY);
// dpiX与dpiY通常相等,即为当前显示器的实际DPI

内容的提问来源于stack exchange,提问作者user3161924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:54:51