2

遵循本指南:http ://www.hhhh.org/cloister/csharp/icons/我能够让我的 NotifyIcon 看起来像它应该的样子,因为 Windows 决定使用 32x32 图标并将其缩放为 16x16 而不仅仅是使用 16x16 图标。

话虽如此,我有一个具有以下分辨率的 .ico 文件:

  • 256x256x32
  • 64x64x32
  • 48x48x32
  • 32x32x32
  • 16x16x32
  • 48x48x8
  • 32x32x8
  • 16x16x8
  • 32x32x4
  • 16x16x4

但是,当我增加显示器上的 DPI 设置时,NotifyIcon 中显示的图标是更高分辨率的版本,更多的装饰最终看起来很糟糕,缩放到 NotifyIcon 的大小。它现在采用和缩放什么尺寸的图标?专门为 NotifyIcon 创建一个各种尺寸的简单图标会更好吗?

4

3 回答 3

0

通知区域中显示的图标是小图标。也就是说,它们的大小由 SM_CXSMICON 系统指标给出。找出该尺寸并提供精确尺寸的图标以避免混叠。如果您手头没有一个确切尺寸的图标,那么您能做的最好的可能就是将最近的较小尺寸图标绘制到空白透明画布的中间,然后使用它。

您可能无法使用托管的 NotifyIcon 包装器执行此操作。我希望你没有得到足够的控制。我描述的过程确实需要您能够调用Shell_NotifyIcon,本机API,并传递一个HICON。

于 2013-09-26T20:23:48.727 回答
0

在这里检查我的答案:一旦图像出现在系统托盘中,notifyicon 图像看起来很糟糕

基本上,您需要明确声明要在运行时使用的大小,并将您的应用程序声明为 DPI-Aware。

于 2014-03-24T02:03:40.773 回答
0

此页面http://msdn.microsoft.com/en-us/library/bb773352(VS.85).aspx提供了如何为正确 DPI 传递正确图标的示例。它使用 LoadIconMetric,这在 c# 中可能不直接可用,但编组很简单。

于 2013-10-01T10:15:08.657 回答