从url创建imagebrush,bitmap和writeablebitmap

JTI*_*TIM 7 image azure imagebrush azure-storage-blobs windows-phone-8.1

嘿,我有一个使用silverlight API的Windows Phone 8.1应用程序.我正从blob存储中下载此图像.

要下载的图像

图像来自以下链接:https:// [service] .blob.core.windows.net/[imagename] .png,只需使用URI即可在多个浏览器中显示和下载图像.

我现在想将它用作基于blobstorage的imageuri的图像画笔:

// If we have a returned SAS.
                BitmapImage myOnlineImage = new BitmapImage();
                myOnlineImage.UriSource = new Uri(uploadImage.ImageUri, UriKind.RelativeOrAbsolute);
                //ImageOnlineTest.Source = myOnlineImage;
                var imageBrush = new ImageBrush
                {
                    ImageSource = myOnlineImage,
                    Stretch = Stretch.None
                };
                var source = FindChildShieldCanvas(CanvasImage, imageBrush);

                WriteableBitmap wbm = new WriteableBitmap((BitmapImage)myOnlineImage);
                ImageOnlineTest.Source = wbm;
Run Code Online (Sandbox Code Playgroud)

myOnlineImage建立不正确,至少我不能将图像转换为writeablebitmapimage(正从转换零除外),并在另外的图像刷为空,即空.但据我所知,这是方法吗?

所以基本上

如何imagebrush基于https站点的URL 创建?

JTI*_*TIM 4

我最终自己解决了这个问题:

记得添加using System.Runtime.InteropServices.WindowsRuntime;

// If we have a returned SAS.
                BitmapImage myOnlineImage = new BitmapImage();

                //myOnlineImage.UriSource = new Uri(uploadImage.ImageUri, UriKind.RelativeOrAbsolute);
                using (var webCLient = new Windows.Web.Http.HttpClient())
                {
                    webCLient.DefaultRequestHeaders.Add("User-Agent", "bot");
                    var responseStream = await webCLient.GetBufferAsync(new Uri(uploadImage.ImageUri, UriKind.RelativeOrAbsolute));
                    var memoryStream = new MemoryStream();//responseStream.ToArrayAsStream().ReadAsync());

                    memoryStream.Write(responseStream.ToArray(), 0, responseStream.ToArray().Length);
                    memoryStream.Position = 0;
                    myOnlineImage.SetSource(memoryStream);

                }
                //ImageOnlineTest.Source = myOnlineImage;
                var imageBrush = new ImageBrush
                {
                    ImageSource = myOnlineImage,
                    Stretch = Stretch.None
                };
                var source = FindChildShieldCanvas(CanvasImage, imageBrush);

                WriteableBitmap wbm = new WriteableBitmap((BitmapImage)myOnlineImage);
Run Code Online (Sandbox Code Playgroud)

此代码适用于 imagebrush 和 writeablebitmap