所以我的应用程序从一个url获取一个BitmapImage,这是有效的,然后我需要将该图像分配给writeablebitmap。目前我有这个:
Debug.WriteLine("Poster opened for loading. Url=" + e);
BitmapImage img = new BitmapImage(new Uri(e));
Backdrop.Source = img;
img.ImageOpened += async (s, e1) =>
{
WriteableBitmap wbm = new WriteableBitmap(((BitmapImage)s).PixelWidth, ((BitmapImage)s).PixelHeight);
var storageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(e));
using (var stream = await storageFile.OpenReadAsync())
{
await wbm.SetSourceAsync(stream);
}
};
这是一个非常糟糕的代码,但这一切都有效,直到StorageFile.GetFileFromApplicationUriAsync()
,我告诉该值在一个意想不到的范围内。我猜这是因为它只接受" ms-appx:///"格式,而不是" http://"。有没有办法让这个工作?并最终以一种更清洁的方式?
我觉得这很容易,但这是一场噩梦。我从昨天开始就试图这样做。
P.S。我知道这可能看似重复,但我发现StackOverflow上没有任何实际工作。
答案 0 :(得分:2)
试试这个:
var httpClient = new HttpClient();
var buffer = await httpClient.GetBufferAsync(pictureUri);
var writeableBitmap = new WriteableBitmap(width, height);
using (var stream = buffer.AsStream())
{
await writeableBitmap.SetSourceAsync(stream.AsRandomAccessStream());
}