using System.Runtime.InteropServices.WindowsRuntime;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Media.Imaging;
using Windows.Graphics.Imaging;
namespace XFEWarframe.Desktop.Editing;
internal static class OverviewSnapshot
{
internal static async Task SaveAsync(UIElement element, string path)
{
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(element);
var pixels = (await bitmap.GetPixelsAsync()).ToArray();
using var file = File.Create(path);
using var stream = file.AsRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, pixels);
await encoder.FlushAsync();
}
}
using System.Runtime.InteropServices.WindowsRuntime;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Media.Imaging;
using Windows.Graphics.Imaging;
namespace XFEWarframe.Desktop.Editing;
internal static class OverviewSnapshot
{
internal static async Task SaveAsync(UIElement element, string path)
{
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(element);
var pixels = (await bitmap.GetPixelsAsync()).ToArray();
using var file = File.Create(path);
using var stream = file.AsRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, pixels);
await encoder.FlushAsync();
}
}