1

我被困在我的应用程序中。我有一个网格,里面有一些元素。这些元素是按钮、图像和其他控件,如堆栈面板和嵌套网格。我想在单击按钮时将显示给用户的内容保存为图像,但我不知道如何继续。

我可以将网格和按钮等元素写入可写位图吗?还是有其他方法?

简而言之,当用户单击按钮时,我想对我的应用程序屏幕进行截屏。请帮忙。

4

4 回答 4

1

不幸的是,目前这是不可能的。正如@FilipSkakun在此处的回复中提到的那样,您可能可以根据您的要求参与其中。

于 2013-04-10T06:57:48.610 回答
1

这在 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();
}
于 2014-01-03T22:41:41.263 回答
0

在 WinRt 上无法拍摄 winrt 应用程序的“屏幕截图”或仅控制控件。没有实施,现在他们不打算这样做。

于 2013-04-19T15:27:51.283 回答
0

您可以使用 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);
}

我希望它对你有帮助。

于 2013-04-10T07:03:09.103 回答