c# – 使用GetManifestResourceStream找不到嵌入式资源

我目前正在开发一个卡DLL,我需要将每张卡的图像文件作为嵌入式资源,当前项目如下所示:

注意:卡片图像(.png)位于Resources文件夹中.

我一直在尝试的代码&几乎是我能找到的唯一代码,是这样的:

Assembly _assembly;
Stream _imagestream;

private Image img;
public Image Img
{ 
get
    {
        return img;
    }
}

public Kaart() : this(5,"Spades") { }

public Kaart(int val,string s)
{
    this.KaartWaarde = val;
    this.figuur = s;
    this._imagestream = imgS();
    this.img = new Image(_imagestream);
}

private Stream imgS()
{
    try
    {
        _assembly = Assembly.GetExecutingAssembly();
        Stream s = _assembly.GetManifestResourceStream(string.Format("{0}{1}.png",this.kaartWaarde,this.figuur.Substring(0,1)));
        if (s != null)
            return s;
        else
            return null ;
    }
    catch
    {
        throw new Exception("Kaart kan niet geladen worden.");
    }
}

我似乎得到的唯一例外是在创建Kaart对象时的异常,代码在这里

Kaart k = null;
try
{
    k = new Kaart();
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message); //This MessageBox is being shown
}
ImageSourceConverter c = new ImageSourceConverter();
testBox.source = (ImageSource)c.ConvertFrom(k.Img);

被抓住的例外&使用MessageBox显示如下:

Value of ‘null’ is not valid for ‘stream’.

代码执行期间观察我的变量时,我注意到了某种方式

Stream s = _assembly.GetManifestResourceStream(string.Format(“{0} {1} .png”,1)));

即使使用Kaarten格式,也无法找到图像.{0} {1} .png

这简直让我想知道我在这里做错了什么,或者我是否使用了错误的语法.有任何想法吗?

编辑:
现在正在正确加载图像,但ImageSourceConverter仍然抛出NullReferenceException

卡创作&加载Stream对象(并将它们卸载到Image对象中)现在可以正常工作,但是当我尝试使用下面的代码在我的WPF Image控件中实际显示图像时,会抛出NullRefException.

Kaartspel kaarten = new Kaartspel();

Kaart k = kaarten.kaarten[7];

ImageSourceConverter c = new ImageSourceConverter();
testBox.source = (ImageSource)c.ConvertFrom(k.Img); //Exception here

解决方法

哪个Image类提供了一个接受流的构造函数

猜猜你可以使用System.Drawing.Image.FromStream并将其强制转换为System.Drawing.Bitmap.然后你可以使用以下内容

System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(),IntPtr.Zero,Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions());

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...