BitmapImage img = new BitmapImage(new Uri("somepath",UriKind.Relative));
WriteableBitmap wbm = new WriteableBitmap(img);
我在上面一行中得到一个运行时错误:“对象引用未设置为对象的实例”。我无法使用BitmapImage初始化WriteableBitmap
BitmapImage img = new BitmapImage(new Uri("somepath",UriKind.Relative));
WriteableBitmap wbm = new WriteableBitmap(img);
我在上面一行中得到一个运行时错误:“对象引用未设置为对象的实例”。我无法使用BitmapImage初始化WriteableBitmap
如果图像文件的构建操作设置为资源,则以下代码将起作用。
Uri uri = new Uri("/ProjectName;component/Images/image.jpg", UriKind.Relative);
StreamResourceInfo resourceInfo = Application.GetResourceStream(uri);
BitmapImage img = new BitmapImage();
img.SetSource(resourceInfo.Stream);
WriteableBitmap wbm = new WriteableBitmap(img);
注意,资源被由应用类定义的静态方法GetResourceStream访问。 现在,如果将文件的构建操作更改为“内容”而非“资源”,则可以大大简化Uri sintax。
Uri uri = new Uri("Images/image.jpg", UriKind.Relative);
的区别,如果你想知道... 如果您导航到Visual Studio项目的Bin/Debug目录,并找到包含你的程序的XAP文件,其重命名为ZIP扩展。并看看里面。
在这两种情况下,位图都被明显地存储在XAP文件中的某处。
您收到空引用异常的原因是BitmapImage.CreateOptions Property默认值为BitmapCreateOptions.DelayCreation
。你可以将其设置为BitmapCreateOptions.None
和创造WriteableBitmap
后的图像加载:
BitmapImage img = new BitmapImage(new Uri("somepath",UriKind.Relative));
img.CreateOptions = BitmapCreateOptions.None;
img.ImageOpened += (s, e) =>
{
WriteableBitmap wbm = new WriteableBitmap((BitmapImage)s);
};
是“路径”的文件的有效路径?该文件的构建操作是否设置为“内容”或“资源”? – 2011-05-18 07:16:10
路径正确,img已经初始化。 – hashi 2011-05-18 07:38:01