【发布时间】:2011-10-31 09:12:15
【问题描述】:
我需要打印一个 silverlight UserControl 的屏幕截图,我已经尝试过使用 PrintDocument 的常规方式,但不幸的是它需要的时间太长,而且因为它必须在 UI 线程上进行,所以整个应用程序也被锁定了长。这需要很长时间,因为该控件包含一个需要测量并打印在许多页面上的网格。
所以我正在寻找一种不锁定 UI 线程的方法。有什么方法可以在后台线程上再次呈现这些控件(与最初呈现的可见控件分开)?然后计划将这些发送到 PrintDocument,或者如果无法使用 WritableBitmap 对它们进行屏幕截图。
我已经快速开始了,但当然我总是遇到线程关联性问题。鉴于我不希望这些控件对用户可见,但我希望有办法解决这个问题?
干杯
【问题讨论】:
-
您的意思是使用 WriteableBitmap 类来渲染元素吗? msdn.microsoft.com/en-us/library/aa347331(v=VS.95).aspx
-
我不太确定,但在 Silverlight 中似乎不可能在后台渲染控件。为此,您需要一个新的 Dispatcher。 MSDN says Dispatcher 只能与 UI 线程一起使用。也不能实例化。
标签: c# multithreading silverlight printing dispatcher