WP7:从墓碑状态恢复应用程序导致应用程序崩溃。使用Writeablebitmap

时间:2012-04-19 04:07:52

标签: c# wpf windows-phone-7

我正在使用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元素的截图。

1 个答案:

答案 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);
        }
    }
}