Печать в Silverlight 4 - PullRequest
       15

Печать в Silverlight 4

3 голосов
/ 30 апреля 2010

У нас есть приложение, структурированное примерно так:

<Grid x:Name="LayoutRoot">
  <ScrollViewer>
<Canvas x:Name="canvas">
  <StackPanel> < Button /><Slider /><Button /></StackPanel>
  <custom:Blob />
  <custom:Blob />
  <custom:Blob />
</Canvas>
  </ScrollViewer>
</Grid>

Каждый BLOB-объект состоит из 1 или более прямоугольников, линий и текстовых полей; они расположены где угодно на холсте.

Если я распечатываю документ с использованием LayoutRoot:

PrintDocument pd = new PrintDocument();
pd += (s, pe) => { pe.PageVisual = LayoutRoot; };
pd.Print("Blobs");

... это похоже на экран печати - полосы прокрутки, ползунки, видимые капли - печатаются.

Если я установлю PageVisual = canvas, ничего не печатается.

Как я могу получить все объекты BLOB-объектов и только эти объекты для печати? Нужно ли мне копировать их в другой контейнер и передавать этот контейнер PageVisual? Могу ли я использовать ViewBox, чтобы убедиться, что все они помещаются на одной странице?

Спасибо за любые указатели ....

Ответы [ 2 ]

2 голосов
/ 02 мая 2010

Первая мысль, которая пришла вам в голову при чтении вашего поста, - это размер вашего холста, который группирует ваши объекты Blob. Итак, нашел несколько интересных фрагментов, которые могут вам помочь:

В дополнение к указанию UIElement, вы можете получить физическое Размер области печати с PrintPageEventArgs .. ::. PrintableArea имущество. Если UIElement превышает область печати, содержимое будет обрезается в границах PrintableArea. Размеры область печати находится на основе экрана пиксели.

и

Вы используете PrintPageEventArgs .. ::. HasMorePages свойство для печати документа с несколько страниц. По умолчанию для PrintPageEventArgs .. ::. HasMorePages is false, поэтому его не нужно устанавливать для одностраничных документов. Однако если Есть несколько страниц для печати, вы установить PrintPageEventArgs .. ::. HasMorePages свойство true, чтобы указать, что Есть дополнительные страницы для печати. Ты устанавливаешь PrintPageEventArgs .. ::. HasMorePages обратно в false в событии PrintPage обработчик, когда последняя страница распечатаны.

Документация статья

0 голосов
/ 03 октября 2010

Вы можете применить преобразование масштаба к LayoutRoot перед печатью.

Но я столкнулся с проблемой, когда LayoutRoot остается уменьшенным / увеличенным после печати. (Заданный вопрос здесь )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...