得到了.PNG文件。希望嵌入的图标资源在表单标题栏上显示为图标

时间:2020-03-06 14:56:10  来源:igfitidea点击:

这是一个面试问题。给定Visual Studio 2008和另存为.PNG文件的图标,他们需要将图像作为嵌入式资源,并用作表单标题栏中的图标。

我正在寻找该问题的模型答案,即(有效!)代码和任何Visual Studio技巧。 (样板答案是如果我下次再见的话,应该可以得到我的工作。)

具体来说,我不知道一旦图像是嵌入式资源就如何加载,也不知道如何将其作为标题栏的图标。

作为解决方案的一部分,我忽略了嵌入位,将资源复制到ouput目录,并尝试了以下操作:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Icon = new Icon("Resources\IconImage.png");
    }
}

失败,并显示错误"参数"图片"必须是可以用作图标的图片"。

我以为.PN​​G文件实际上需要是.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。

自由和容易。