使用 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.
我正在构建一个简单的应用程序,它使用 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.