Windows 8 将网格和其中的元素另存为jpeg图像-WinRT

Windows 8 将网格和其中的元素另存为jpeg图像-WinRT,windows-8,windows-phone-8,windows-phone-7.1,winrt-xaml,windows-phone-7.8,Windows 8,Windows Phone 8,Windows Phone 7.1,Winrt Xaml,Windows Phone 7.8,我被我的应用程序卡住了。我有一个网格,里面有一些元素。这些元素是按钮、图像和其他控件,如stackpanel和嵌套网格。我想在点击按钮时将用户看到的内容保存为图像,但我不知道如何继续 我可以将网格和按钮等元素写入可写位图吗?还是有别的办法 简而言之,我想在用户单击按钮时拍摄我的应用程序屏幕的屏幕快照。请帮忙。不幸的是,现在不可能。正如@FilipSkakun所提到的,根据您的要求,您可能可以部分地使用该方法。您可以使用Windows Phone 8中的以下选项将任何UIElement转换为Jpe

我被我的应用程序卡住了。我有一个网格,里面有一些元素。这些元素是按钮、图像和其他控件,如stackpanel和嵌套网格。我想在点击按钮时将用户看到的内容保存为图像,但我不知道如何继续

我可以将网格和按钮等元素写入可写位图吗?还是有别的办法


简而言之,我想在用户单击按钮时拍摄我的应用程序屏幕的屏幕快照。请帮忙。

不幸的是,现在不可能。正如@FilipSkakun所提到的,根据您的要求,您可能可以部分地使用该方法。

您可以使用Windows Phone 8中的以下选项将任何UIElement转换为Jpeg图像

var bitmap = new WriteableBitmap(element,null);

using (MemoryStream s = new MemoryStream())
{
     bitmap.SaveJpeg(s, (int)ContentPanel.Width, (int)ContentPanel.Height, 0, 100);
}

我希望这将对您有所帮助。

拍摄winrt应用程序的“屏幕截图”,或者仅在winrt上进行控制是不可能的。没有实现,现在他们也不打算这样做。

这在Windows 8.1中有点改变,可以使用RenderTargetBitmap来实现。RenderTargetBitmap.RenderAsync(UIElement)将允许您获取任何元素的像素,包括页面

下面的示例将PNG保存到使用FileSavePicker指定的文件中

var filePicker = new FileSavePicker();
var file = await filePicker.PickSaveFileAsync();
var renderTargetBitmap = new RenderTargetBitmap();

using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
    await renderTargetBitmap.RenderAsync(this);
    var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
    var pixelBytes = pixelBuffer.ToArray();

    encoder.SetPixelData(
        BitmapPixelFormat.Bgra8, 
        BitmapAlphaMode.Ignore, 
        (uint)renderTargetBitmap.PixelWidth, 
        (uint)renderTargetBitmap.PixelHeight, 
        96.0, 
        96.0, 
        pixelBytes);

    await encoder.FlushAsync();
}

它肯定适用于Windows Phone 8。。如果您在这方面仍然面临任何问题,您可以检查并告诉我。嗯,我认为您应该在WinRT上进行测试。@DavidBekham WriteableBitmap在WinRT中是不同的。它没有SaveJpeg方法。