uwp - 是否有可能将 UI 元素转换为多个图像(UWP)
问题描述
我尝试将 UI 元素保存到图像文件中。但是我们有更多的 UI 元素(比如 100 个行列表)。所以画质很差。是否有可能将 UI 元素转换为多个图像或获得高质量的图像,请为此分享一些建议。
我尝试使用以下代码保存图像文件:
public async Task GenereateImage(UIElement root)
{
RenderTargetBitmap renderTargetBitmap1 = new RenderTargetBitmap();
await renderTargetBitmap1.RenderAsync(root, (int)root.RenderSize.Width, (int)root.RenderSize.Height);
var pixelBuffer1 = await renderTargetBitmap1.GetPixelsAsync();
var disply = DisplayInformation.GetForCurrentView();
var savePicker = new FileSavePicker();
savePicker.DefaultFileExtension = ".png";
savePicker.FileTypeChoices.Add(".png", new List<string> { ".png" });
savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
savePicker.SuggestedFileName = "snapshot.png";
// Prompt the user to select a file
var saveFile = await savePicker.PickSaveFileAsync();
// Verify the user selected a file
if (saveFile == null)
return;
// Encode the image to the selected file on disk
using (var fileStream = new Windows.Storage.Streams.InMemoryRandomAccessStream())
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Ignore,
(uint)renderTargetBitmap1.PixelWidth,
(uint)renderTargetBitmap1.PixelHeight,
DisplayInformation.GetForCurrentView().LogicalDpi,
DisplayInformation.GetForCurrentView().LogicalDpi,
pixelBuffer1.ToArray());
await encoder.FlushAsync();
}
}
结果图像如下:
解决方案
推荐阅读
- swift - 使用 SDWebImage 将图像加载到 TableViewCell
- r - 从 R 中随机森林模型中的每棵树获取预测(在训练中使用训练函数,在预测中使用预测)
- c# - 如何使左右按钮起作用?Unity3D C#
- types - 为什么这个函数类型是“错误类型的”
- entity-framework - EF Core:计算实体的多级子级数量
- flutter - Dart - 相当于 Dart 的 C# Stream/MemoryStream 和 stream.WriteByte(..)
- php - Python:print json.dumps 在独立调用时不返回任何内容
- linux - 从 Linux 内核模块禁用输入设备
- virtual-machine - QEMU 虚拟机:在 Windows 10(主机)和 Solaris 2.7(来宾)之间创建共享文件夹
- javascript - 如何使用 javascript 对 for 循环 jinja 模板字段执行计算