Я пытаюсь сохранить элементы пользовательского интерфейса в файл изображения. но у нас больше элементов пользовательского интерфейса (например, список из 100 строк). Так что качество изображения очень плохое. Есть ли возможность преобразовать элементы пользовательского интерфейса в несколько изображений или получить изображение с высоким качеством, пожалуйста, поделитесь некоторыми предложениями по этому поводу.
Я попытался сохранить файл изображения, используя приведенный ниже код:
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();
}
}
Результат будет примерно таким:
введите описание изображения здесь