在具有 16 位颜色深度的显示器(包括设置为 16 位颜色的远程桌面 session )上,Windows 窗体应用程序使用分配的标题栏图标的低颜色深度版本 (Form.Icon
)。但是,WPF 应用程序和 Windows 资源管理器使用 24 位颜色深度(如果存在)。
我第一次在我当前正在开发的 Windows 窗体应用程序中看到这一点。我使用的图标定义了 4 位、24 位和 32 位变体。在 16 位显示器上,Windows 窗体在标题栏中使用丑陋的 4 位版本,而不是美观的 24 位或 32 位版本。
为了测试和说明该行为,我创建了一个测试图标,其中每种尺寸和颜色格式的设计明显不同。我包括 4 位、8 位、24 位和 32 位变体。
以下是 32 位和 16 位显示器上的结果:
在 32 位显示器上,一切正常:
Windows 资源管理器:
WPF 应用程序:
Windows 窗体应用程序:
在 16 位显示器上,Windows 窗体显示比 WPF 或 Windows 资源管理器颜色深度更低的图标变体:
Windows 资源管理器:
WPF 应用程序:
Windows 窗体应用程序:
在 16 位显示器上,Windows 资源管理器和 WPF 使用 24 位格式,但 Windows 窗体不使用。在本例中,它使用 8 位格式。我真正的应用程序图标没有 8 位变体(但我现在要做一个!),因此 Windows 窗体使用 4 位变体。
如何使我的 Windows 窗体应用程序在 16 位显示器上的标题栏中显示 24 位版本的图标?
最佳答案
不幸的是,您无法在 16 位系统上显示 24 位图像。但是,您可以想出一个技巧,使您的应用程序适应其运行的系统。
所以,你可以尝试伪造图片的“位”字段(尝试使用一些照片编辑软件),使其认为它是 16 位,而实际上是 24 位。这是可能的,几年前我已经成功做到了,但我不记得怎么做了(抱歉)。
我想这就是你应该尝试解决问题的方法。
祝你好运!
关于.net - WinForms 应用程序在 16 位显示屏上使用低质量标题栏图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826990/