WPF 应用程序的 Windows 任务栏中显示的大小错误的图标

Posted

技术标签:

【中文标题】WPF 应用程序的 Windows 任务栏中显示的大小错误的图标【英文标题】:Wrong sized icon showing up in Windows taskbar for WPF app 【发布时间】:2014-07-09 14:49:42 【问题描述】:

我有一个简单的 WPF 应用程序。我有一个很好的多分辨率图标,尺寸从 256x256 一直到 16x16。所有平常的东西。

我的应用在 Windows 资源管理器中看起来很棒,图标看起来很棒,即使在超大视图下也是如此。图标可以很好地缩放,我可以看到相应分辨率的相应图标。

但是,48x48 总是用于固定任务栏或固定开始菜单,看起来很糟糕。

我在通常的位置找不到任何关于此的信息,但我的直觉告诉我一定有人知道一些事情,而我只是错过了一些明显的事情。

【问题讨论】:

@kyndigs 聪明的人可以提出愚蠢的问题...... 对不起,我的意思是我的问题很愚蠢,因为这将是任何人都会做的第一次检查,我指的不是你的问题 :) 我在项目的属性中设置了。我不想要系统菜单中的图标,所以我没有在 Main.xaml 中设置 Icon=,但如果我这样做并没有什么不同。 @kyndigs 感谢您的建议。我正在拔头发试图弄清楚为什么任务栏在我的 C++ 程序中显示错误的图标大小,即使在资源管理器和 ICO 中一切看起来都正确。没有意识到任务栏使用的是 16x16 图标而不是 ICO 文件。 【参考方案1】:

.ico 文件中包含 48x48 像素版本后,任务栏图标似乎会变得模糊。出于某种原因,Windows 显然没有选择正确大小的 32x32 像素版本,而是选择了 48x48 的版本并将其放大。

我的解决方案是使用两个单独的图标文件:

一个 .ico 包含 24x24 和 32x32 版本的图标,当在 XAML 或 Hannish 的方法中使用 Icon 属性设置为 Window 的图标时,将分别用于标题栏和任务栏 - 没有 不需要的缩放。 第二个图标文件包含 - 取决于哪些来源是正确的 - 16x16 和 256x256 像素之间的大小范围。在项目属性中将此图标设置为应用程序图标将使该图标在所有其他位置(例如桌面和文件资源管理器)在不同视图设置下看起来都很好。

在 Windows 10 上测试,这似乎涵盖了以下显示案例:任务栏、窗口标题栏、Alt-TAB 菜单、桌面和文件资源管理器。

【讨论】:

这对我也有用,虽然有点麻烦!我认为@scott,您从未找到“正确”的解决方案?【参考方案2】:

任务栏中显示的图标大小由多种因素决定; HKEY_CURRENT_USER|Control Panel|Desktop|WindowMetrics、DPI 设置和任务栏设置的“MinWidth”值。

选择 48x48 是因为默认的“MinWidth”设置是(我相信)53,而 48x48 是图标中适合该设置的最大分辨率。

如果您对 48x48 图标的外观不满意,可能需要重新设计。确保它使用正确的颜色数量等。小图标看起来如何?与 48x48 一样差还是更差?如果是这样,那么这个图标可能太复杂了,在这么小的分辨率下看起来不太好。

我知道没有办法强制窗口为任务栏选择不同的图标大小。

【讨论】:

以上是关于WPF 应用程序的 Windows 任务栏中显示的大小错误的图标的主要内容,如果未能解决你的问题,请参考以下文章

隐藏 Windows任务栏中的窗口显示

隐藏 Windows任务栏中的窗口显示

如何在 Windows 7 任务栏中显示进度(使用 Qt)?

WPF任务栏同步进度

WPF任务栏同步进度

任务栏中的windows资源管理器点开后显示该文件没有与之关联的应用来执行该操作