экран печати wpf

#wpf #printing #c#-3.0

#wpf #печать #c #-3.0

Вопрос:

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

 PrintDialog printDialog = new PrintDialog ( );
if ( printDialog.ShowDialog ( ) == true )
{
    PrintCapabilities capabilities = printDialog.PrintQueue.GetPrintCapabilities ( printDialog.PrintTicket );

    double scale = Math.Min ( capabilities.PageImageableArea.ExtentWidth / this.ActualWidth,
        capabilities.PageImageableArea.ExtentHeight / this.ActualHeight );

    this.LayoutTransform = new ScaleTransform ( scale, scale );
    Size size = new Size ( capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight );

    this.Measure ( size );
    this.Arrange ( new Rect 
        ( new Point ( capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight ), 
            size ) );

    printDialog.PrintVisual ( this, "Well Information" );
}
  

Я печатаю на обычной странице размером 8,5×11 в книжном формате. Я получаю страницу высотой около 9 дюймов (сверху и снизу расположены серые полосы толщиной около 1 дюйма) и размером примерно в половину экрана (слева направо). В идеале, то, что я хочу, — это альбомная печать (по умолчанию, я понимаю, что пользователь может это изменить), которая отображает весь экран, масштабируемый по мере необходимости.

Комментарии:

1. Дополнительная информация: на самом деле кажется, что размер окна изменен правильно, но окно содержит сетку с веб-браузером с фиксированной высотой и шириной, которые, по-видимому, не изменяются.

2. Если я применю WebBrowser. LayoutTransform = new ScaleTransform(масштаб, scale ), затем веб-браузер также масштабируется.

3. Итак, установка LayoutTransform для окна автоматически не применяется к остальным элементам управления? Или это обычно происходит, но я каким-то образом победил это?