我被困在我的应用中。我有一个网格,里面有一些元素。这些元素是按钮,图像和其他控件,如stackpanel和嵌套网格。我想保存用户在点击按钮时显示的图像,但我不知道如何继续这一点。
我可以将网格和按钮等元素写入可写位图吗?或者还有其他方式吗?
简而言之,我想在用户点击按钮时拍摄我的应用程序屏幕的屏幕截图。请帮忙。
答案 0 :(得分:1)
不幸的是,目前还不可能。正如@FilipSkakun提到in a response here,您可能会根据您的要求获得部分内容。
答案 1 :(得分: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();
}
答案 2 :(得分: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);
}
我希望它会对你有所帮助。
答案 3 :(得分:0)
在WinRt上无法使用winrt应用程序的“屏幕截图”,或仅使用控件。没有实现,现在他们不打算这样做。