Hac*_*Que 19 c# icons winforms
我有应用程序图标的深色和浅色版本; 黑暗版本最适用于灰色表面,例如Windows XP任务栏,其中灯光版本最适合作为标题栏中的图标.
有没有办法可以将任务栏中的图标设置为与C#中我的表单中使用的图标不同的图标(P/Invoke很好)?
And*_*ler 15
将WM_SETICON消息发送到具有ICON_SMALL和ICON_BIG参数的不同图标句柄的表单:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, IntPtr lParam);
private const uint WM_SETICON = 0x80u;
private const int ICON_SMALL = 0;
private const int ICON_BIG = 1;
public MyForm()
{
InitializeComponent();
SendMessage(this.Handle, WM_SETICON, ICON_SMALL, Properties.Resources.IconSmall.Handle);
SendMessage(this.Handle, WM_SETICON, ICON_BIG, Properties.Resources.IconBig.Handle);
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个古老的问题,但是当我尝试实现相同的目标时,我遇到了它,而且是的,你至少可以在Windows 7/8上做到这一点.
事实证明,ICO文件不仅包含一个图像,它包含9种不同分辨率的9种不同图像:
在Windows 7和8上,任务栏上使用64x64图像,图表上使用16x16图像,该图标位于表单的左上角.
您可以使用像Greenfish Icon Editor Pro这样的工具(我不适用于它们或任何东西,这不是插件!)将这些作为两个单独的图像,然后将此*.ico文件正常添加到Windows窗体/ WPF Visual Studio中的表单.
最终结果如下所示:

正如您所看到的,我的WPF应用程序有两个单独的图标,一个在任务栏中,另一个在窗体上.
| 归档时间: |
|
| 查看次数: |
5275 次 |
| 最近记录: |