通知图标和高 DPI 显示
本文关键字:DPI 显示 图标 通知 | 更新日期: 2023-09-27 18:32:06
遵循本指南:http://www.hhhh.org/cloister/csharp/icons/我能够让我的NotifyIcon看起来像它应该的样子,因为Windows决定使用32x32图标并将其缩放到16x16,而不仅仅是使用16x16图标。
话虽如此,我有一个.ico文件,其中包含以下分辨率:
- 256×256×32
- 64x64x32
- 48x48x32
- 32x32x32
- 16x16x32
- 48x48×8
- 32x32x8
- 16x16x8
- 32x32x4
- 16x16x4
但是,当我增加显示器上的 DPI 设置时,通知图标中显示的图标是更高分辨率的版本,带有更多修饰,最终看起来很糟糕,缩放到 NotifyIcon 的大小。它现在正在采用和缩放什么大小的图标?我最好专门为 NotifyIcon 创建一个各种大小的简单图标?
通知区域中显示的图标是小图标。这是它们的大小由SM_CXSMICON系统指标给出的。找出该尺寸并提供确切尺寸的图标以避免混叠。如果您手头没有确切尺寸的图标,您可能能做的最好的事情就是将最接近的较小尺寸的图标绘制到空透明画布的中间,然后使用它。
您可能无法使用托管的 NotifyIcon 包装器执行此操作。我希望你没有得到足够的控制。我描述的过程确实要求您能够调用本机 API Shell_NotifyIcon 并传递 HICON。
这个页面 http://msdn.microsoft.com/en-us/library/bb773352(VS.85).aspx给出了一个如何为正确的DPI传递正确图标的示例。 它使用 LoadIconMetric,这可能在 c# 中不能直接使用,但封送一个很容易。
在这里检查我的答案:一旦图像最终进入系统托盘,通知图标图像看起来很糟糕
基本上,需要显式声明要在运行时使用的大小,并将应用声明为 DPI 感知。