2014-01-28 3 views
0

Как указать параметр печати в приложении silverlight. Я могу печатать с использованием класса PrintDocument, но он разрезает края. Есть ли способ свернуть вид, чтобы он поместился в печатной бумаге. Спасибо за любую помощь. Я использую следующий код:Печать в Silverlight отключает часть

PrintDocument document = new PrintDocument(); 
document.PrintPage += (s, args) => 
{ 
args.PageVisual = this.LayoutRoot; 
}; 
document.Print("Silverlight Print Application Demo"); 

ответ

0

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

  1. Полиграфическая элемент вынесенным в пользовательском интерфейсе в какой-то момент и
  2. Рендер элемент исключительно для печати.

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

Если вам нужно сначала удалить его по какой-либо причине (возможно, из-за того, что пользователь должен сначала взаимодействовать с ним), затем сохраните элемент в переменной printedPage, которую вы можете повторно добавить в визуальное дерево события PrintDocument.EndPrint.

Для основного использования обработчика событий что-то вроде этого:

void HandlePrintPage(object sender, PrintPageEventArgs e) 
    { 
     var panel = new Grid(); 

     // get an element to print that is not attached to the visual tree 
     printedPage = GetDetachedPageToPrint(); 

     panel.Children.Add(printedPage.ReportPage); 

     // we wrap it in a Viewbox to make it full-page 
     var viewbox = new Viewbox() { Child = panel }; 

     // we need to have a measure pass 
     viewbox.Measure(e.PrintableArea); 

     e.PageVisual = viewbox; 

     // for more pages, we would need to be more careful 
     //with parent detachments 
     e.HasMorePages = false; 
    } 
0

У меня была та же проблема, пару месяцев назад и пытались несколько решений.

Я уже ответил на этот вопрос в другом сообщении. Пожалуйста, проверьте следующее:

https://stackoverflow.com/a/20896774/1141477

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

Надеюсь, это поможет!

Смежные вопросы