Ошибка печати VB .NET WinFormApplication в ландшафтном режиме после настройки

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

Я установил ландшафтный режим как истинный. Вы можете обратиться к приведенному ниже коду:

    Private Sub PrintAll_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    Handles PrintAll.Click
    PrintForm1.Form = Me
    PrintDocument1.DefaultPageSettings.Landscape = True
    PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.FullWindow)
    PrintDialog1.ShowDialog()
    End Sub

И результат показан ниже на скриншоте http://s335.photobucket.com/user/blakeex/media/notcomplete.png.html Может ли кто-нибудь поделиться советом или руководством?


person user2150279    schedule 18.07.2013    source источник


Ответы (1)


для печати полной клиентской области прокручиваемого форму, даже если форма была изменена.

Попробуйте PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.Scrollable)

Вот еще один способ, который напечатает любую часть формы, видимую на экране:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    CaptureScreen()
    PrintDocument1.DefaultPageSettings.Landscape = True
    PrintDocument1.DefaultPageSettings.Margins = New Printing.Margins(0, 0, 0, 0)
    PrintDocument1.Print()
End Sub
Dim memoryImage As Bitmap
Private Sub CaptureScreen()
    Dim myGraphics As Graphics = Me.CreateGraphics()
    Dim s As Size = Me.Size
    memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
    Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
    memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
End Sub
Private Sub printDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    Dim pagerec As New RectangleF(e.PageSettings.PrintableArea.X, e.PageSettings.PrintableArea.Y, e.PageSettings.PrintableArea.Height, e.PageSettings.PrintableArea.Width)
    e.Graphics.DrawImage(memoryImage, pagerec, New Rectangle(Me.Location, Me.Size), GraphicsUnit.Pixel)
End Sub
person tinstaafl    schedule 18.07.2013
comment
Уважаемый @tinstaafl и другие уважаемые участники, я попробовал ваш метод выше. Это не могло работать, как показано на моем снимке экрана ниже: [s335.photobucket.com/user/blakeex/media/notcomplete-1.png.html] Не могли бы вы предложить альтернативу или я пропустил какой-то шаг? - person user2150279; 19.07.2013
comment
Я добавил альтернативу своему ответу. - person tinstaafl; 19.07.2013