Silverlight - визуализация элементов управления в фоновом потоке - PullRequest
2 голосов
/ 31 октября 2011

Мне нужно напечатать скриншот Silverlight UserControl, который я пытался сделать обычным способом с PrintDocument, но, к сожалению, это занимает слишком много времени, и потому что это должно происходить в потоке пользовательского интерфейса, все приложение тоже заблокированодолго.Это занимает так много времени, потому что элемент управления содержит сетку, которую необходимо измерить и распечатать на многих страницах.

Так что я ищу способ сделать это без блокировки потока пользовательского интерфейса.Есть ли способ, как я могу визуализировать эти элементы управления снова (отдельно от первоначально визуализированных видимых элементов управления) в фоновом потоке?План состоял бы в том, чтобы затем отправить их в PrintDocument или, если это невозможно, использовать WritableBitmap, чтобы сделать их скриншоты.

Я уже быстро пошел, но, конечно, всегда получаю потоквопросы сродства.Учитывая, что я не хочу, чтобы эти элементы управления были видны пользователю, хотя я надеюсь, что есть способ обойти это?

Cheers

1 Ответ

0 голосов
/ 01 декабря 2011

Вы можете использовать WriteableBitmap

Получить ссылку на корневой элемент, на который хотите сослаться.Вы можете использовать XamlReader, если хотите динамически загружать XAML из внешнего источника, если хотите.Назовите это ScreenshotRoot

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

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

bmp.Invalidate();

Вы должны быть в состоянии сделать это в другой теме.

...