使用 UWP 和 C# 刷新图像 (Raspberry Pi3 Windows10 IoT)

Refresh an image using UWP and C# (Raspberry Pi3 Windows10 IoT)

我正在构建一个简单的应用程序,它使用 UWP 中的图像 class 显示图像位图。 当我更改图像上的内容时,程序不会刷新显示的图像。 我尝试使用另一个临时图像更改源,但问题仍然存在。 这是 XAML 文件中的对象

<Image x:Name="image" HorizontalAlignment="Left" Height="128" VerticalAlignment="Top" Width="128" AutomationProperties.AccessibilityView="Raw" ManipulationMode="All"/>

这是更改图片来源的代码

private void ChangeImage_BTN_Click(object sender, RoutedEventArgs e)
    {
        readImage();
    }     


    private void readImage()
    {
        switch (nimg)
        {

            case 1:
                image.Source = new BitmapImage(new Uri("ms-appx:///Assets/France.bmp"));
                nimg = 3;
                break;
            case 2:
                //image.Source = new BitmapImage(new Uri("ms-appx:///Assets/Inghilterra.bmp"));
                //nimg = 3;
                break;
            case 3:
                image.Source = new BitmapImage(new Uri("ms-appx:///Assets/Area24_128x128.bmp"));
                nimg = 1;
                break;
        }
    }

当我将图像 Area_128x128.bmp 切换到 France.bmp 时,我修改了位图文件添加了一些绘图,再次切换到 Area_128x128.bmp 图像有旧的东西。 我怎样才能正确看到图像?

URI 中的“ms-appx:///”前缀指的是应用程序的安装目录。事实证明不支持在运行时更新文件编辑。

对于您的用户案例,您可以尝试一些解决方法。

  • 您可以这样使用 ApplicationData.RoamingFolder

                 Windows.Storage.StorageFolder roamingFolder = Windows.Storage.ApplicationData.Current.RoamingFolder;
                var file = await roamingFolder.GetFileAsync("France.bmp");
                using (var fileStream = (await file.OpenAsync(Windows.Storage.FileAccessMode.Read)))
                {
                    var bitImg = new BitmapImage();
                    bitImg.SetSource(fileStream);
                    image.Source = bitImg;
                }
    
  • 你可以这样使用KnownFolders.PicturesLibrary

                var file = await KnownFolders.PicturesLibrary.GetFileAsync("France.bmp");
                using (var fileStream = (await file.OpenAsync(Windows.Storage.FileAccessMode.Read)))
                {
                    var bitImg = new BitmapImage();
                    bitImg.SetSource(fileStream);
                    image.Source = bitImg;
                }
    

一般来说,KnownFolders.PicturesLibrary的路径是C:\Users\[YOUR USER NAME]\Pictures

更多信息可以参考Store and retrieve settings and File access permissions.