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

wdebmtf2  于 2023-10-14  发布在  其他
关注(0)|答案(2)|浏览(112)

我尝试在代码中设置一个BitmapImage的源代码,但没有显示任何东西,这是我的代码:
示例1:

<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;
brccelvz

brccelvz1#

是权限问题。您的应用没有直接读取c:\users\XXX的权限,因此无法从该路径加载BitmapImage。请参阅音乐、图片和视频库中的文件和文件夹
假设c:\Users\XXX\Pictures是当前用户的Pictures库,并且应用具有Pictures Library功能,那么您可以获取图像文件的代理句柄并使用BitmapImage.SetSourceAsync加载它。
我假设这里的代码是为了演示而简化的,因为图片库是一个以用户为中心的位置,不受应用程序的控制。该应用程序通常不能假设一个硬编码的图像名称将在那里。

// . . .
        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;
        }
    }
ttp71kqs

ttp71kqs2#

试试这个

image.Source = new BitmapImage(new Uri("ms-appx:///Assets/XXXX.bmp"));

您可以参考BitmapImage Failing when trying to change image on a trigger c# UWP

相关问题