gpt4 book ai didi

c# - Silverlight - 在后台线程中呈现控件

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:59 24 4
gpt4 key购买 nike

我需要打印 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();

您应该可以在另一个线程中执行此操作。

关于c# - Silverlight - 在后台线程中呈现控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7951663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com