2

所以我的应用程序从一个有效的 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://”。有什么办法可以让这个工作吗?最终以更清洁的方式?我以为这很容易,但这是一场噩梦。从昨天开始,我一直在尝试这样做。

PS 我知道这可能看起来像重复,但我在 StackOverflow 上绝对没有发现任何实际有效的东西。

4

1 回答 1

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());
}
于 2016-03-11T21:43:37.227 回答