private async Task DoRender(ScreenshotCallback callback) { var renderTargetBitmap = new RenderTargetBitmap(); await renderTargetBitmap.RenderAsync(AssociatedObject); var pixelBuffer = await renderTargetBitmap.GetPixelsAsync(); var storageFile = await KnownFolders.SavedPictures.CreateFileAsync(string.Concat(Prefix, ".png"), CreationCollisionOption.GenerateUniqueName); using (var stream = await storageFile.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream); encoder.SetPixelData( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)renderTargetBitmap.PixelWidth, (uint)renderTargetBitmap.PixelHeight, 96d, 96d, pixelBuffer.ToArray()); await encoder.FlushAsync(); if (callback != null) { callback(storageFile); } } }
public ScreenshotMessage(ScreenshotCallback callback = null, object sender = null, object target = null) : base(sender, target) { Callback = callback; }