I need to print an image of my VB.Net Windows.Form
when the user clicks a button. Is there a good method for doing this?
当用户单击按钮时,我需要打印我的VB.Net Windows.Form的图像。有这么好的方法吗?
3 个解决方案
#1
You need to use the PrintForm
component. Please see How to: Print a Form by Using the PrintForm Component:
您需要使用PrintForm组件。请参阅如何:使用PrintForm组件打印表单:
The PrintForm component enables you to quickly print an image of a form exactly as it appears on screen without using a PrintDocument component. The following procedures show how to print a form to a printer, to a print preview window, and to an Encapsulated PostScript file.
PrintForm组件使您可以快速打印表单图像,而不使用PrintDocument组件。以下过程说明如何将表单打印到打印机,打印预览窗口和Encapsulated PostScript文件。
#2
If you want to amend the image the following code will capture the bitmap and send it to the printer (On the Button1 Click)
如果要修改图像,以下代码将捕获位图并将其发送到打印机(在Button1上单击)
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 - mPrintBitMap.Width) \ 2
Dim lHeight As Integer = e.MarginBounds.Y + (e.MarginBounds.Height - mPrintBitMap.Height) \ 2
e.Graphics.DrawImage(mPrintBitMap, lWidth, lheight)
' There's only one page.
e.HasMorePages = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Copy the form's image into a bitmap.
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)
' Make a PrintDocument and print.
mPrintDocument = New PrintDocument
mPrintDocument.Print()
End Sub
End Class
#3
If you really want a snapshot of the form, you'll have to simulate a screen capture. Here's a sample that'll help. It's going to be pretty ugly though, so you may want to consider making it a report using a PDF or report builder.
如果您真的想要表单的快照,则必须模拟屏幕截图。这是一个有用的示例。虽然它会非常丑陋,所以您可能需要考虑使用PDF或报表生成器将其作为报表。
#1
You need to use the PrintForm
component. Please see How to: Print a Form by Using the PrintForm Component:
您需要使用PrintForm组件。请参阅如何:使用PrintForm组件打印表单:
The PrintForm component enables you to quickly print an image of a form exactly as it appears on screen without using a PrintDocument component. The following procedures show how to print a form to a printer, to a print preview window, and to an Encapsulated PostScript file.
PrintForm组件使您可以快速打印表单图像,而不使用PrintDocument组件。以下过程说明如何将表单打印到打印机,打印预览窗口和Encapsulated PostScript文件。
#2
If you want to amend the image the following code will capture the bitmap and send it to the printer (On the Button1 Click)
如果要修改图像,以下代码将捕获位图并将其发送到打印机(在Button1上单击)
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 - mPrintBitMap.Width) \ 2
Dim lHeight As Integer = e.MarginBounds.Y + (e.MarginBounds.Height - mPrintBitMap.Height) \ 2
e.Graphics.DrawImage(mPrintBitMap, lWidth, lheight)
' There's only one page.
e.HasMorePages = False
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Copy the form's image into a bitmap.
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)
' Make a PrintDocument and print.
mPrintDocument = New PrintDocument
mPrintDocument.Print()
End Sub
End Class
#3
If you really want a snapshot of the form, you'll have to simulate a screen capture. Here's a sample that'll help. It's going to be pretty ugly though, so you may want to consider making it a report using a PDF or report builder.
如果您真的想要表单的快照,则必须模拟屏幕截图。这是一个有用的示例。虽然它会非常丑陋,所以您可能需要考虑使用PDF或报表生成器将其作为报表。