如何获得应用程序屏幕截图

时间:2015-10-28 13:51:05

标签: c# uwp

在SL App中,我可以使用:

var bitmap = new WriteableBitmap(uiElementForViewControl, new TranslateTransform());

但是在UWP中,我该如何做同样的事情呢?

3 个答案:

答案 0 :(得分:1)

使用RenderTargetBitmap渲染UIElement(例如您的页面)类似于您的代码段使用WriteableBitmap的方式,然后使用BitmapEncoder将RenderTargetBitmap的像素编码为jpg或png以便保存。

请参阅https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.rendertargetbitmap.aspxhttps://msdn.microsoft.com/en-us/library/windows/apps/mt244351.aspx

答案 1 :(得分:1)

    private async Task SaveVisualElementToFile(FrameworkElement element, StorageFile file)
    {
        var renderTargetBitmap = new RenderTargetBitmap();
        await renderTargetBitmap.RenderAsync(element);
        var pixels = await renderTargetBitmap.GetPixelsAsync();

        using (var fileStream = await file.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,
                pixels.ToArray());
            await encoder.FlushAsync();
        }
    }

答案 2 :(得分:0)

使用Control.DrawToBitmap,您可以捕获一个表单,这是您正在寻找的“应用”。