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

时间:2017-08-03 10:19:11

标签: c# visual-studio-2015 raspberry-pi3 windows-10-iot-core

我正在使用UWP中的Image类构建一个显示图像位图的简单应用程序。 当我在图像上更改某些内容时,程序不会刷新显示的图像。 我尝试使用另一个临时图像更改源,但问题仍然是相同的。 这是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图像有旧的东西。 我怎样才能正确看到图像?

1 个答案:

答案 0 :(得分:1)

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

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

  • 您可以像这样使用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 settingsFile access permissions