.ToBitmap:缺少'使用指令'或'汇编参考'

时间:2016-06-23 13:42:42

标签: c# bitmap visual-studio-2015 using-directives

我在C#中有一个Windows控制台应用程序,可用作电话簿。我在应用程序设置菜单图标的行中遇到Missing Directives错误,例如:

cmsProgramMenu.Items.Add("&Settings", Properties.Resources.phone_receiver.ToBitmap(), OnSettings_Click);

完整错误为'object' does not contain a definition for 'ToBitmap' and no extension method 'ToBitmap' accepting a first argument of type 'object' could be found (are you missing a using directive or assembly reference?)

我在网上和SO上搜索过,我见过的所有指令都已包含在我的代码中,但错误仍然存​​在。这些是我拥有的:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
using System.Data;
using System.Windows.Media.Imaging;

我还缺少另一个吗?或者是否有另一种将图像转换为位图的方法?我在Visual Studio 2015中工作。

3 个答案:

答案 0 :(得分:2)

问题是Properties.Resources.phone_receiver的类型为Object,而错误消息显示Object没有名为ToBitmap的方法。如果您确定它是Icon(您的代码建议它是),那么您可以执行以下操作:

((Icon)Properties.Resources.phone_receiver).ToBitmap()

这显式地将Properties.Resources.phone_receiver强制转换为Icon,然后编译器知道它可以在其上调用ToBitmap方法。

答案 1 :(得分:2)

如果您在资源窗口(项目属性/资源)中将图标添加为“图标”,则它将被输入为Icon。对System.Drawing的引用就足够了,ToBitmap将出现在IntelliSense中。

但是,如果您将资源添加为“图片”,那么它已经被输入为Bitmap,并且根本不需要调用ToBitmap()

不需要任何类型的铸造!

Resources selektion

如果你在代码编辑器中浏览“phone_receiver”,将出现一个工具提示并显示资源的类型:

               hover the mouse here  |
                                     V
     

enter image description here

答案 2 :(得分:0)

如果phone_receiver是图片

,请尝试

Bitmap myBitmap = new Bitmap(Properties.Resources.phone_receiver); cmsProgramMenu.Items.Add(“& Settings”,myBitmap,OnSettings_Click);