使用文件选择器保存文件,以图片为例,把Image控件中的图片保存到用户选择的位置
var saveFile = new FileSavePicker();
//初始位置
saveFile.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
// 显示在下拉列表的文件类型
saveFile.FileTypeChoices.Add("图片", new List<string>() { ".png", ".jpg", ".jpeg", ".bmp" });
// 默认的文件名
saveFile.SuggestedFileName = "SaveFile";
StorageFile sFile = await saveFile.PickSaveFileAsync();
if (sFile != null)
{
// 在用户完成更改并调用CompleteUpdatesAsync之前,阻止对文件的更新
CachedFileManager.DeferUpdates(sFile);
//把控件变成图像
RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
//传入参数Image控件
await renderTargetBitmap.RenderAsync(MyImage);
var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
using (var fileStream = await sFile.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Ignore,
(uint)renderTargetBitmap.PixelWidth,
(uint)renderTargetBitmap.PixelHeight,
DisplayInformation.GetForCurrentView().LogicalDpi,
DisplayInformation.GetForCurrentView().LogicalDpi,
pixelBuffer.ToArray()
);
//刷新图像
await encoder.FlushAsync();
}
}
else
{
information.Text = "取消保存";
}