在UWP中将BitmapImage设置为ImageSource不起作用

时间:2018-07-31 20:41:26

标签: c# xaml uwp

我正在尝试使用Image在代码中设置BitmapImage的源,但是没有显示 这是我的代码:

xaml:

<Image x:Name="img" HorizontalAlignment="Center"  VerticalAlignment="Center" Stretch="Fill" />

后面的代码:

var image =  new BitmapImage(new Uri(@"C:\Users\XXX\Pictures\image.jpg", UriKind.Absolute));
image.DecodePixelWidth = 100;
this.img.Source = image;

1 个答案:

答案 0 :(得分:1)

这是一个权限问题。您的应用无权直接读取c:\ users \ XXX,因此无法从该路径加载BitmapImage。参见Files and folders in the Music, Pictures, and Videos libraries

假设c:\ Users \ XXX \ Pictures是当前用户的图片库,并且该应用程序具有图片库功能,那么您可以获取图像文件的代理句柄并用BitmapImage.SetSourceAsync加载。 / p>

我假设此处的代码已简化用于演示,因为图片库是应用程序控件之外的以用户为中心的位置。该应用通常不能假定会使用硬编码的图像名称。

        // . . .
        await SetImageAsync("image.jpg");
        // . . . 
    }

    private async Task SetImageAsync(string imageName)
    {
        // Load the imageName file from the PicturesLibrary
        // This requires the app have the picturesLibrary capability
        var imageFile = await KnownFolders.PicturesLibrary.GetFileAsync(imageName);
        using (var imageStream = await imageFile.OpenReadAsync())
        {
            var image = new BitmapImage();
            image.DecodePixelWidth = 100;

            // Load the image from the file stream
            await image.SetSourceAsync(imageStream);
            this.img.Source = image;
        }
    }