【发布时间】:2018-01-10 18:41:29
【问题描述】:
我有一个 WinForms 应用程序。我在项目设置中设置了可执行文件的图标(至少有 16x16 和 32x32 格式),它成功地显示在资源管理器和其他地方的 .exe 文件中。
如何将此图标设置为表单的图标(Form.Icon 属性或其他东西)?可以用在表单左侧的表头中,也可以用来在任务栏中显示表单。
据我所知,System.Drawing.Icon 不能使用多种图标格式创建,但是.. 当用户的任务栏启用了“小图标”时,任务栏的图标应该是 16x16。禁用此选项时,应为 32x32。如果图标大小错误,窗口会缩放它,看起来很糟糕。
Icon.ExtractAssociatedIcon 只给了我一种格式 (32x32)。 P/Invoking ExtractIconEx 给了我两种格式(16x16 和 32x32),但我无法将它组合到一个 System.Drawing.Icon 实例中以设置为 Form.Icon。
当然,我可以从 .ico 文件中设置带有表单属性的图标,但它会给我资源重复:一个图标作为可执行文件的图标存储在 PE 中,另一个作为 .NET 资源存储。
再次,问题是:我应该使用什么设置来使 exe 的图标成为表单的图标并与任何任务栏设置一样工作?
【问题讨论】:
-
使用 IcoFX 之类的程序只是为了确保您将图标的所有位数和尺寸都保存到一个文件中。然后,一旦将图标设置为表单图标,它就会对任务栏图标使用相同的图标并相应地调整大小而不做任何事情。
-
我确信我的 .ico 是正确的。我应该如何设置这个图标而不在 .NET 资源中复制它?
-
在项目资源中转到图标选项卡并在那里添加您的图标。然后在表单中只需单击图标属性并从资源列表中选择您的图标即可。
-
@Franck 正如我在问题帖子中所说,这将导致资源重复。这是不希望的
-
您的可执行文件图标应采用多种格式(16x16、32x32、64x64 和 256x256)。对所有内容都使用该多尺寸图标。有在线服务可以将 PNG、JPG 等位图转换为多格式图标。搜索“图标转换器”或类似内容。