UIElement Screenshot UWP - C#

4

我在网上搜索,但没找到任何关于在UWP(通用Windows平台)中截取UI元素屏幕截图(例如位图)的解决方案。


这里有一个官方的XAML渲染为位图示例,你可以查看一下。虽然这个示例是针对Windows 8.1商店应用程序的,但在UWP中实现是相同的。 - Jay Zuo
@JayZuo-MSFT,谢谢。但是我反对RenderTargetBitmap的返回类型,因为我需要以位图格式获取这个图像(屏幕截图),因为我真的需要在UI元素的DragStarting事件中执行args.DragUI.SetContentFromBitmapImage(myBitmap)。谢谢。 - fipcurren88
可以使用 BitmapEncoderRenderTargetBitmap 转换为位图。 - Irwene
@Sidewinder94,谢谢。 简而言之,我无法从UI元素中捕获图像并转换为BitmapImage?Ty - fipcurren88
1个回答

3
您可以使用 Render XAML to bitmap。以下是一些示例代码:

    // Render to an image at the current system scale and retrieve pixel contents
    RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
    await renderTargetBitmap.RenderAsync(RenderedGrid);
    var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();

    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 = await saveFile.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,
            pixelBuffer.ToArray());

        await encoder.FlushAsync();
    }

示例示范 https://code.msdn.microsoft.com/windowsapps/XAML-render-to-bitmap-dd4f549f

这个示例演示了如何将XAML渲染为位图。您可以通过点击上面的链接来查看代码并了解更多信息。

https://blogs.msdn.microsoft.com/lighthouse/2013/10/17/capturing-snapshot-in-windows-8-1-store-app/ - Dev-Systematix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接