WinForms应用程序在16位显示器上使用低质量标题栏图标

SWB*_*SWB 12 .net icons color-depth winforms

在具有16位颜色深度的显示器上(包括设置为16位颜色的远程桌面会话),Windows窗体应用程序使用指定标题栏图标(Form.Icon)的低颜色深度版本.但是,WPF应用程序和Windows资源管理器使用24位颜色深度(如果存在).

我第一次在我正在研究的Windows窗体应用程序中看到这个.我使用的图标定义了4位,24位和32位变体.在16位显示器上,Windows Forms在标题栏中使用了丑陋的4位版本而不是漂亮的24位或32位版本.

为了测试和说明行为,我创建了一个测试图标,每种尺寸和颜色格式都有明显不同的设计.我包括4位,8位,24位和32位变体.

以下是32位和16位显示的结果:

在32位显示器上,一切都很好:

Windows资源管理器:

Windows资源管理器,32位显示

WPF申请:

WPF应用程序,32位显示

Windows窗体应用程序:

Windows窗体应用程序,32位显示

在16位显示器上,Windows窗体显示比WPF或Windows资源管理器更低颜色深度的图标变体:

Windows资源管理器:

Windows资源管理器,16位显示

WPF申请:

WPF应用程序,16位显示

Windows窗体应用程序:

Windows窗体应用程序,16位显示

在16位显示器上,Windows资源管理器和WPF使用24位格式,但Windows窗体不使用.在这种情况下,它使用8位格式.我的真实应用程序图标没有8位变体(但我现在要制作一个!),因此Windows Forms使用了4位变体.

如何让我的Windows窗体应用程序在16位显示器的标题栏中显示24位版本的图标?

小智 1

不幸的是,没有办法可以在 16 位系统上显示 24 位图像。但是,您可以想出一个技巧,使您的应用程序适应其运行的系统。

所以,你可以尝试伪造图片的“位”字段(尝试使用一些照片编辑软件),使其认为它是 16 位,而实际上是 24 位。这是可能的,几年前我已经设法做到了,但我不能记住如何(抱歉)。

我想这就是你应该尝试解决问题的方法。

祝你好运!