VB.net中实现打印窗体

 

示例
Private Declare Function BitBlt Lib "gdi32.dll" Alias "BitBlt" (ByVal _
   hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As _
   Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal _
   hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, _
   ByVal dwRop As System.Int32) As Long
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)
   Dim dc1 As IntPtr = mygraphics.GetHdc
   Dim dc2 As IntPtr = memoryGraphics.GetHdc
   BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, _
      Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
   mygraphics.ReleaseHdc(dc1)
   memoryGraphics.ReleaseHdc(dc2)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
   ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
   PrintDocument1.PrintPage
   e.Graphics.DrawImage(memoryImage, 0, 0)
End Sub
Private Sub PrintButton_Click(ByVal sender As System.Object, ByVal e As _
   System.EventArgs) Handles PrintButton.Click
   CaptureScreen()
   PrintDocument1.Print()
End Sub
编译代码
此示例需要:

窗体上名为 PrintDocument1 的 PrintDocument 组件。
名为 PrintButton 的 Button 控件。在单击 PrintButton 时,就会打印该窗体。

VB.net ,可以使用 PrintDocument 控件来实现自定义纸张打印程序。下面给出一个简单的示例代码,以帮助你入门: 1. 创建一个新的 VB.net 项目,并在窗体上放置一个 PrintDocument 控件。 2. 在窗体的 Load 事件添加以下代码: ```vb Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 设置纸张大小和边距 PrintDocument1.DefaultPageSettings.PaperSize = New PaperSize("Custom", 500, 700) PrintDocument1.DefaultPageSettings.Margins = New Margins(50, 50, 50, 50) End Sub ``` 这里我们设置纸张大小为 500x700,边距为 50。 3. 在窗体上添加一个按钮,并在按钮的 Click 事件添加以下代码: ```vb Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 打印文本 Dim printText As String = "Hello, world!" PrintDocument1.Print() End Sub ``` 这里我们将要打印的文本保存在一个字符串变量,然后调用 PrintDocument 控件的 Print 方法来实现打印。 4. 最后在 PrintDocument 控件的 PrintPage 事件添加以下代码: ```vb Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage ' 获得纸张大小和边距 Dim pageSize As Size = e.PageSettings.PrintableArea.Size Dim margins As Margins = e.PageSettings.Margins ' 绘制文本 Dim printFont As New Font("Arial", 12) Dim printBrush As New SolidBrush(Color.Black) Dim printRect As New RectangleF(margins.Left, margins.Top, pageSize.Width - margins.Left - margins.Right, pageSize.Height - margins.Top - margins.Bottom) e.Graphics.DrawString(printText, printFont, printBrush, printRect) ' 设置 HasMorePages 属性为 False,表示打印完成 e.HasMorePages = False End Sub ``` 在 PrintPage 事件,我们可以获得纸张大小和边距,并使用 Graphics 对象绘制文本。最后要注意设置 HasMorePages 属性为 False,表示打印完成。 以上就是一个简单的 VB.net 自定义纸张打印程序的实现。你可以根据自己的需求来修改纸张大小、边距、字体等参数,实现更复杂的打印功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值