得到了.PNG文件。希望嵌入的图标资源在表单标题栏上显示为图标
这是一个面试问题。给定Visual Studio 2008和另存为.PNG文件的图标,他们需要将图像作为嵌入式资源,并用作表单标题栏中的图标。
我正在寻找该问题的模型答案,即(有效!)代码和任何Visual Studio技巧。 (样板答案是如果我下次再见的话,应该可以得到我的工作。)
具体来说,我不知道一旦图像是嵌入式资源就如何加载,也不知道如何将其作为标题栏的图标。
作为解决方案的一部分,我忽略了嵌入位,将资源复制到ouput目录,并尝试了以下操作:
public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Icon = new Icon("Resources\IconImage.png"); } }
失败,并显示错误"参数"图片"必须是可以用作图标的图片"。
我以为.PNG文件实际上需要是.ICO,但我看不到如何进行转换。这种推定是正确的还是有其他问题?
解决方案
C2.0中有关该主题的很好资源,将"位图转换为图标"。
启动VS,启动新的Windows应用程序。打开属性表,将.png文件添加为资源(在此示例中:glider.png)。从这里开始,我们可以将资源作为位图文件访问为WindowsFormsApplication10.Properties.Resources.glider。
将其用作应用程序图标的代码:
public Form1() { InitializeComponent(); Bitmap bmp = WindowsFormsApplication10.Properties.Resources.glider; this.Icon = Icon.FromHandle(bmp.GetHicon()); }
该问题的模型答案为:
System.Console.WriteLine("Are you serious?"); System.Console.WriteLine("I think I will try my chances with another employer.");
这是我们可以使用Google和Stack Overflow之类的资源在几分钟内在计算机前解决的问题,解决这样的任务几乎无法了解我们是否是一名优秀的开发人员。
Icon.FromHandle会导致PNG出现问题,因为PNG具有不止一位的透明度。此类问题可以通过像这样的库来解决。
他们可能不知道该怎么做,而他们正试图从潜在员工中挤出答案。此外,从PNG设置表单图标是毫无成效的表现,首先应该是ICO。
到这里:
http://www.getpaint.net/(免费)
和这里:
Paint.NET ico插件(免费)
安装Paint.NET。将ico插件(第二个链接)放入Paint.NET \ FileTypes文件夹中。启动Paint.NET。打开.png并将其另存为.ico。
自由和容易。