Windows窗体上的非方形图标?

Dav*_*ave 9 .net c# icons winforms

是否可以在Windows窗体的左上角显示一个与标准16X16像素图标不同的图标?

看来Skype的图标比标准宽得多:

在此输入图像描述

是否可以在Windows窗体应用程序中?

Jus*_*tin 4

您可以这样做,但可能需要付出更多的努力,而不是仅仅拥有一个更大的图标。

汉斯发布了一篇文章,大致指出了找出这个问题的答案所需的信息,但尚未发布答案本身,所以我会澄清。

旧的(Vista 之前的)方法是重写WndProc表单上的方法并处理WM_NCPAINT消息。请注意,这意味着您现在负责绘制整个窗口框架(窗口边框、标题、关闭/恢复图标等...),而不仅仅是图标 - 即这是一件相对较小的事情需要付出很大的努力。

更新的(Vista 后)方法是使用DWM API - 请注意,此 API 不是通过 .Net Framework 直接公开,因此您需要在 C# 中使用 P/Invoke 来实现此目的。您想要做的部分是标题为“在扩展框架窗口中绘图”的部分,您可以在其中将负责绘图的区域扩展到正常客户区域之外并进入窗口框架。这比以前少了麻烦(您不必绘制关闭按钮之类的东西),但是仍然意味着您要对许多通常不会做的事情负责,例如调整大小的命中盒测试和移动。

基本上,它远没有提供更大的图标那么简单,对于大多数应用程序来说,它可能比它的价值更多的努力,但是您可以在 C# 中执行此操作,如果您真的想尝试一下,那篇文章应该可以帮助您入门。