1
我们需要在后台线程中创建WPF控件(例如,带有一些图片的画布),然后截取它们。控件不得显示。在后台线程中创建WPF控件的屏幕截图
我设法通过使它成为STA线程来创建线程上的控件。然后我使用这里的代码http://blogs.msdn.com/b/swick/archive/2007/12/02/rendering-ink-and-image-to-a-bitmap-using-wpf.aspx创建屏幕截图。
虽然这不起作用:控件的大小始终为0,因此会崩溃。即使我手动指定宽度和高度,它也不起作用,保存的图像始终为黑色。
这里是我的代码:
private void CreateScreenshotThread()
{
var image = CreateImage();
TakeScreenshot(image , @"e:\1.bmp");
}
我也试图UpdateLayout请()但没有成功。你有什么想法我可以如何执行控件的布局更新和呈现?我玩过PresentationSource但没有成功(不完全理解该课程的目的)。
你的榜样作品 - 但在我的代码我使用的图像和一个不工作:屏幕截图始终是白色的。我从Image派生出来,并且覆盖了OnRender,看看是否有人被调用 - 事实上它是(callstack从Arrange()调用开始)。 – 2015-03-16 13:24:31
对不起,这是我的错误 - 我加载的图像没有复制到输出目录,我认为它会从程序集本身加载(该文件被标记为“资源”)。因此,图像无法加载。 – 2015-03-16 13:57:42