Как масштабировать форму, чтобы она соответствовала размеру бумаги формата А4 для печати
В моем приложении у меня есть несколько оконных форм, которые нужно распечатать.
У всех конечных пользователей есть экраны разного размера, самый низкий из которых-1366 x 768.
Я попробовал использовать PrintForm, но программа печатает только то, что находится на экране, поэтому формы должны быть маленькими и поэтому заполнять только часть листа формата А4.
Поэтому я хочу иметь возможность захватить форму и масштабировать ее до формата А4 для печати.
Я скопировал некоторый код из интернета и изменил его для своего использования, но он, похоже, не масштабирует форму, хотя и печатает ее.
Есть ли у кого-нибудь идеи, как я могу это сделать?
Пожалуйста, имейте в виду, что я полный дилетант в этом деле. Производство программного обеспечения для секции пожилых людей гольф-клуба.
Что я уже пробовал:
Код, который я использую, выглядит следующим образом
Public Class TeamSelect12 'Define your print object Private PrintDoc1 As PrintDocument = New PrintDocument Private PrintPreviewDialog1 As PrintPreviewDialog = New PrintPreviewDialog Private PageSetupDialog1 As PageSetupDialog = New PageSetupDialog 'Print Button Code Private Sub PrtTSBut_Click(sender As System.Object, e As System.EventArgs) Handles PrtTSBut.Click PDFTeamBut.Visible = False 'Hides button PrtTSBut.Visible = False 'Hides button Me.Refresh() With PageSetupDialog1 'Assign the document to use .Document = PrintDoc1 'Enable printer button .AllowPrinter = True .EnableMetric = True ' Initialize the dialog's PrinterSettings property to hold user ' defined page settings. .PageSettings = New System.Drawing.Printing.PageSettings ' Initialize dialog's PrinterSettings property to hold user ' set printer settings. .PrinterSettings = New System.Drawing.Printing.PrinterSettings End With PrintPreviewDialog1.Document = PrintDoc1 AddHandler PrintDoc1.PrintPage, AddressOf PDoc_PrintPage Dim margins As New Margins(20, 20, 20, 40) PrintDoc1.DefaultPageSettings.Margins = margins PrintPreviewDialog1.ShowDialog() 'Replace buttons back on form PrtTSBut.Visible = True PDFTeamBut.Visible = True 'Hide form Me.Hide() InputForm.Show() ' Return to input form End Sub 'Print Handler And Graphics print method With scaling Private Sub PDoc_PrintPage(sender As Object, e As PrintPageEventArgs) PrintToGraphics(e.Graphics, e.MarginBounds) End Sub Public Sub PrintToGraphics(Graphics As Graphics, bounds As Rectangle) 'Print the control's view to a Graphics object. '<param name="graphics">Graphics object to draw on.</param> '<param name="bounds">Rectangle to print in.</param> 'Draw the control and contents to a bitmap Dim Bitmap As Bitmap = New Bitmap(Me.Width, Me.Height) Me.DrawToBitmap(Bitmap, New Rectangle(0, 0, Bitmap.Width, Bitmap.Height)) 'Assign Print Bounds to target rectangle Dim PrtWidth, PrtHeight, PrtLeft, PrtTop As Integer PrtWidth = bounds.Width PrtHeight = bounds.Height PrtLeft = bounds.Left PrtTop = bounds.Top Dim target As Rectangle = New Rectangle(PrtLeft, PrtTop, PrtWidth, PrtHeight) 'Scale bitmap to fit target Dim xScale As Double = Bitmap.Width / PrtWidth Dim yScale As Double = Bitmap.Height / PrtHeight If xScale < yScale Then target.Width = Int(xScale * target.Width / yScale) Else target.Height = Int(yScale * target.Height / xScale) End If 'Draw the bitmap Graphics.PageUnit = GraphicsUnit.Display Graphics.DrawImage(Bitmap, target) End Sub