首页 > 解决方案 > 在运行时 c# (uwp) 上将图像添加到资产

问题描述

我正在尝试添加图像功能。用户可以在其中上传项目的图片,它将将该图片添加到我的项目资产中以供将来使用。这是我的代码:

private async void PickAFileButton_ClickAsync(object sender, RoutedEventArgs e)
    {
        FileOpenPicker openPicker = new FileOpenPicker();
        openPicker.ViewMode = PickerViewMode.Thumbnail;
        openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
        openPicker.FileTypeFilter.Add(".jpg");
        openPicker.FileTypeFilter.Add(".jpeg");
        openPicker.FileTypeFilter.Add(".png");

        StorageFile file = await openPicker.PickSingleFileAsync();
        if (file != null)
        {
            // Application now has read/write access to the picked file
            String a = "ms-appx:///Assets/" + file.Name;
            theItem.Source = new BitmapImage(new Uri(a));
        }
        else
        {
            theImage.Text = "Operation cancelled.";
        }
    }

如何将给定的图片添加到我的项目的资产文件夹中,以便我可以在旁边显示它,并将其用于其他用途?

我将非常感谢任何帮助。

标签: c#visual-studioassetswindows-10-universalfilepicker

解决方案


如何将给定的图片添加到我的项目的资产文件夹

uwp 项目的 assets 文件夹在运行时模型中是只读的,我们无法在运行时添加图片。我们建议使用Local文件夹来替换Assets文件夹。

private async void PickAFileButton_ClickAsync(object sender, RoutedEventArgs e)
{
    FileOpenPicker openPicker = new FileOpenPicker();
    openPicker.ViewMode = PickerViewMode.Thumbnail;
    openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    openPicker.FileTypeFilter.Add(".jpg");
    openPicker.FileTypeFilter.Add(".jpeg");
    openPicker.FileTypeFilter.Add(".png");

    StorageFile file = await openPicker.PickSingleFileAsync();
    if (file != null)
    {   await file.CopyAsync( ApplicationData.Current.LocalFolder );
        // Application now has read/write access to the picked file
        String a = "ms-appdata:///local/" + file.Name;
        theItem.Source = new BitmapImage(new Uri(a));
    }
    else
    {
        theImage.Text = "Operation cancelled.";
    }
}

推荐阅读