我正在使用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图像有旧的东西。 我怎样才能正确看到图像?
答案 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 settings和File access permissions。