【发布时间】:2015-03-13 15:40:24
【问题描述】:
我们需要在后台线程中创建 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 但没有成功(不完全理解该类的目的)。
【问题讨论】:
标签: c# wpf multithreading