这是一个面试问题.鉴于Visual Studio 2008和保存为.PNG文件的图标,它们需要将图像作为嵌入资源,并用作表单标题栏中的图标.
我正在寻找这个问题的模型答案,两个(工作!)代码和任何Visual Studio技巧.(如果我下次见到它,那么模特答案就应该让我找到工作.)
具体来说,一旦它是嵌入式资源,我不知道如何加载图像,也不知道如何将图像作为标题栏的图标.
作为部分解决方案,忽略嵌入位,我将资源复制到输出目录并尝试以下方法: -
public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Icon = new Icon("Resources\\IconImage.png"); } }
这失败了错误"参数'图片'必须是可以用作图标的图片."
我假设.PNG文件实际上需要是.ICO,但我看不到如何进行转换.这个假设是正确的还是有不同的问题?
启动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.
自由自在.