注意:卡片图像(.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());
总结以上是内存溢出为你收集整理的c# – 使用GetManifestResourceStream找不到嵌入式资源全部内容,希望文章能够帮你解决c# – 使用GetManifestResourceStream找不到嵌入式资源所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)