Как я могу напечатать документ с отображением текстовых полей?(Vb) - PullRequest
0 голосов
/ 17 февраля 2019

Итак, я пытался напечатать документ, в котором текстовые поля отображаются в верхней части окна рисунка, однако он просто не работает.

Imports System.Drawing.Printing

Public Class Form1
Dim WithEvents mPrintDocument As New PrintDocument
Dim mPrintBitMap As Bitmap

Private Sub m_PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles mPrintDocument.PrintPage
    ' Draw the image centered.
    Dim lWidth As Integer = e.MarginBounds.X + (e.MarginBounds.Width / 0.95 - mPrintBitMap.Width) \ 1
    Dim lHeight As Integer = e.MarginBounds.Y + (e.MarginBounds.Height / 0.9 - mPrintBitMap.Height) \ 2
    e.Graphics.DrawImage(mPrintBitMap, lWidth, lHeight)

    ' There's only one page.
    e.HasMorePages = False
End Sub


    Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click
    picFij.SendToBack()
    lblDN.BringToFront()

    mPrintBitMap = New Bitmap(Me.Width, Me.Width)
    Dim lRect As System.Drawing.Rectangle
    lRect.Width = Me.Width
    lRect.Height = Me.Width
    Me.DrawToBitmap(mPrintBitMap, lRect)



    mPrintDocument = New PrintDocument
    printPreviewDialog1.Document = mPrintDocument
    PrintPreviewDialog1.ShowDialog()

End Sub   

Я пыталсяa BringToFront () и SendToBack (), но это не сработало.

Это то, что я хочу напечатать: https://cdn.discordapp.com/attachments/358502382910570497/546555282940100648/unknown.png

И это предварительный просмотр https://cdn.discordapp.com/attachments/358502382910570497/546555621806178324/unknown.png

Есть идеи?

1 Ответ

0 голосов
/ 17 февраля 2019

Сделайте PictureBox Родителем вашего TextBox, тогда он должен появиться при вызове DrawToBitmap ().Например, чтобы сохранить TextBox1 в том же месте, преобразуйте его в экранные координаты, а затем обратно в клиентские координаты относительно PictureBox:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim pt As Point = TextBox1.PointToScreen(New Point(0, 0))
    TextBox1.Parent = PictureBox1
    TextBox1.Location = PictureBox1.PointToClient(pt)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...