我正在使用Writeablebitmap来截取UI元素的截图。 代码如下所示:
private void Screenshot(FrameworkElement element, String fileNameLoader)
{
try
{
WriteableBitmap bmp = new WriteableBitmap(element, null);
MemoryStream ms = new MemoryStream();
bmp.SaveJpeg(ms, (int)element.ActualWidth, (int)element.ActualHeight, 0, 100);
ms.Seek(0, SeekOrigin.Begin);
MediaLibrary lib = new MediaLibrary();
String filePath = string.Format(fileNameLoader);
lib.SavePicture(filePath, ms);
}
catch (Exception exception)
{
txtDebug.Text = "There was an error. Could not save. " + exception.ToString();
}
}
我遇到的问题是,如果我按下调用屏幕截图()方法的保存按钮,然后按主页按钮将应用程序墓碑化,最后按返回按钮将应用程序恢复,我得到一个屏幕说“恢复......”,应用程序最终崩溃。 在做了一些调试后,我注意到错误似乎是由以下代码行引起的:
WriteableBitmap bmp = new WriteableBitmap(element, null);
用以下内容替换该行:
WriteableBitmap bmp = null;
让我免于崩溃,但我的应用程序无法正常工作(屏幕截图不起作用)。
有没有人遇到过这个问题或者知道如何解决这个问题?我愿意接受任何解决方案,只要我仍然可以截取特定UI元素的截图。
答案 0 :(得分:1)
我无法重现错误,但你可以试试这个:
private void Screenshot(FrameworkElement element, String fileNameLoader)
{
WriteableBitmap bmp = new WriteableBitmap(element, null);
using (MemoryStream ms = new MemoryStream())
{
bmp.SaveJpeg(ms, (int)element.ActualWidth, (int)element.ActualHeight, 0, 100);
ms.Seek(0, SeekOrigin.Begin);
using (MediaLibrary lib = new MediaLibrary())
{
String filePath = string.Format(fileNameLoader);
lib.SavePicture(filePath, ms);
}
}
}