在过去一小时左右的时间里,我一直在为这个问题撕掉我的头发.
我有一些代码如下:
videoTile.Icon = new ImageSourceConverter().ConvertFrom(coDrivr4.Properties.Resources.Music.GetHbitmap()) as ImageSource;
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码时,它表示发生了NullReferenceException."音乐"和GetHbitmap()的返回都不为空.
我试图通过属性获取图像,因为这是我弄清楚如何访问我的Resources文件夹中的图像的唯一方法.我只是将它们作为资源添加到app.xaml文件中,但由于某些原因我没有使用app.xaml文件.
我试错了吗?我需要做的就是获取我的资源目录中的图像的ImageSource对象.我可以在我的XAML中使用它们,但不能在我的生活中使用任何代码.
PS:我不能只将它们作为资源添加到XAML文件中,因为这只是一个类,所以没有XAML文件.
我遇到了完全相同的问题 - 我在一个漂亮的,静态类型的资源文件中得到了所有的位图,我只想用它们设置一个ImageSource.因此,由于ImageSourceConverter抛出了空引用异常,我更改了大头钉并使用了这段代码:
Bitmap bitmap = entityCol.EntityCollectionImage;
this.Image = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); // Image is an image source
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
那么你有很多东西可以在那里无效.我建议你将它们分开:
Bitmap bitmap = coDrivr4.Properties.Resources.Music;
object source = new ImageSourceConverter().ConvertFrom(bitmap.GetHbitmap());
ImageSource imageSource = (ImageSource) source;
videoTile.Icon = imageSource;
Run Code Online (Sandbox Code Playgroud)
注意在这里使用演员而不是as操作员.如果source 不是的ImageSource,这将引发InvalidCastException它会比刚刚结束了一个空引用更具描述性的.
编辑:好的,所以现在我们肯定知道它正在发生ConvertFrom,我建议下一步是找出它是否是.NET 4.0 beta 1中的一个错误.你真的在使用任何.NET 4.0功能吗?我建议你尝试将这些代码提取到一个单独的项目中(你不需要显示API,只需转换图像.尝试在.NET 3.5中运行该代码.如果它以同样的方式失败,那就是从可能出现的问题列表中消除了beta-ness.
| 归档时间: |
|
| 查看次数: |
7395 次 |
| 最近记录: |