簡體   English   中英

Silverlight-在后台線程中渲染控件

[英]Silverlight - Render controls in background thread

我需要打印Silverlight UserControl的屏幕截圖,我嘗試使用PrintDocument進行常規操作,但是不幸的是,這花費的時間太長,並且因為它必須在UI線程上發生,所以整個應用程序被鎖定了太長時間。 由於控件包含一個需要測量並打印在許多頁面上的網格,因此需要花費很長時間。

因此,我正在尋找一種無需鎖定UI線程即可執行此操作的方法。 有什么辦法可以在后台線程上再次呈現這些控件(與原始呈現的可見控件分開)? 計划是將它們發送到PrintDocument,或者如果不可能使用WritableBitmap截取它們的屏幕截圖。

我已經走得很快,但是當然我總是遇到線程關聯性問題。 考慮到我不希望這些控件對用戶可見,盡管我希望有一種解決方法?

干杯

您可以使用WriteableBitmap

獲取對要引用的根元素的引用。 如果要從外部源動態加載XAML,則可以使用XamlReader 稱它為ScreenshotRoot

WriteableBitmap bmp = new WriteableBitmap(ScreenshotRoot.RenderSize.Width, ScreenshotRoot.RenderSize.Height)

bmp.Render(ScreenshotRoot, new MatrixTransform());

bmp.Invalidate();

您應該能夠在另一個線程中執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM