我被困在我的应用程序中。我有一个网格,里面有一些元素。这些元素是按钮、图像和其他控件,如堆栈面板和嵌套网格。我想在单击按钮时将显示给用户的内容保存为图像,但我不知道如何继续。
我可以将网格和按钮等元素写入可写位图吗?还是有其他方法?
简而言之,当用户单击按钮时,我想对我的应用程序屏幕进行截屏。请帮忙。
我被困在我的应用程序中。我有一个网格,里面有一些元素。这些元素是按钮、图像和其他控件,如堆栈面板和嵌套网格。我想在单击按钮时将显示给用户的内容保存为图像,但我不知道如何继续。
我可以将网格和按钮等元素写入可写位图吗?还是有其他方法?
简而言之,当用户单击按钮时,我想对我的应用程序屏幕进行截屏。请帮忙。
不幸的是,目前这是不可能的。正如@FilipSkakun在此处的回复中提到的那样,您可能可以根据您的要求参与其中。
这在 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();
}
在 WinRt 上无法拍摄 winrt 应用程序的“屏幕截图”或仅控制控件。没有实施,现在他们不打算这样做。
您可以使用 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);
}
我希望它对你有帮助。