在c#上以2种不同的大小显示相同的图标

时间:2010-04-24 16:10:25

标签: c# icons

我的目标是两次显示相同的图标,但每次都有不同的尺寸。我尝试了以下方法:

FileStream fs = new FileStream("name_of_the_icon_file.ico", FileMode.Open);
Icon ico = new Icon(fs, 32, 32);     //create an in-memory instance of the icon, size 32x32
Icon ico2 = new Icon(fs, 16, 16);   //create an in-memory instance of the icon, size 16x16  
...
Graphics.DrawIcon(ico, /*some point*/);
Graphics.DrawIcon(ico2, /*some other point*/);

最后一行抛出ArgumentException:Value不在预期范围内。 有人可以向我解释什么是错的,并且正确的做法是什么?

1 个答案:

答案 0 :(得分:2)

图标文件包含一个或多个不同大小的图像。

您正在使用的Icon构造函数尝试查找与您在图标文件中指定的大小完全匹配的内容。如果图标文件不包含16x16图像,则会抛出异常,因为它无法与该确切大小匹配。

相反,只需加载图标(不指定大小,以便加载所有大小),然后使用Graphics.DrawIcon(图标,矩形)覆盖以您希望它伸展的大小绘制它。它将使用图标中定义的最佳匹配大小进行渲染(然后根据需要进行缩放)。

为了获得最佳质量,请编辑图标文件(我建议使用IcoFX)以您想要的尺寸(32x32和16x16)提供特定图像,以便在绘制图标时不会缩放图标。