#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 для окна автоматически не применяется к остальным элементам управления? Или это обычно происходит, но я каким-то образом победил это?