VB2005 如何将PictureBox绘制的图形打印
PictureBox1是图纸(图片),PictureBox2是将图纸展开并绘制的图形,是在 Private Sub PictureBox2_Paint中绘制的,其图形见下图:
打印代码如下:
Dim PrintDialog = New PrintDialog
Dim PrintDocument = New PrintDocument
Dim PageSetupDialog = New PageSetupDialog
PrintDialog.PrinterSettings.Collate = True
Dim Bitmap = New Bitmap(PictureBox2.ClientSize.Width, PictureBox2.ClientSize.Height)
Dim rect As Rectangle
rect = New System.Drawing.Rectangle(0, 0, PictureBox2.Width, PictureBox2.Height)
PictureBox2.DrawToBitmap(Bitmap, rect)
Bitmap.Save("my.gif", Imaging.ImageFormat.Gif)
PictureBox2.Load("my.gif")
PrintDialog.Picturebox2.PrintDialog()
PrintDialog.ShowDialog()
PrintDocument.Print()
问题出在这句“PrintDialog.Picturebox2.PrintDialog() ”,调试时提示:“未找到类型“PrintDialog”的公共成员“Picturebox2””。如果把这句去掉,打印是一张白纸。
请高手指点。谢谢!!!
[最优解释]
1、我自己用这样的方法打印成功
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim open As OpenFileDialog = New OpenFileDialog
open.Filter = "(*.bmp)
[其他解释]
Private Sub button1_Click(sender As Object, e As EventArgs)
'执行打印
Dim MyPrintDg As New PrintDialog()
MyPrintDg.Document = printDocument1
If MyPrintDg.ShowDialog() = DialogResult.OK Then
Try
printDocument1.Print()
Catch
'停止打印
printDocument1.PrintController.OnEndPrint(printDocument1, New System.Drawing.Printing.PrintEventArgs())
End Try
End If
End Sub
'设置printDocument控件的PrintPage事件:
Private Sub printDocument1_PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs)
e.Graphics.DrawImage(pictureBox2.Image, 20, 20)
End Sub
[其他解释]
谢谢楼上!
不过还是一张白纸。问题出在哪里?
[其他解释]
sosoben您好!是不是e.Graphics.DrawImage(PictureBox2.Image, 20, 20)不完整?
另外,
Private Sub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(PictureBox2.Image, 20, 20)
End Sub
如果加上“Handles PrintDocument1.PrintPage”打印机不动作。
[其他解释]
PictureBox2.Image = Image.FromFile (“my.gif”)
这样加载图像试试
还有,你的PrintDocument1_PrintPage_1 加入到你的PrintDocument 的 PrintPage事件了吗??
[其他解释]
'执行打印()
Dim MyPrintDg As New PrintDialog()
MyPrintDg.Document = printDocument1
If MyPrintDg.ShowDialog() = DialogResult.OK Then
Try
printDocument1.Print()
Catch
'停止打印
printDocument1.PrintController.OnEndPrint(printDocument1, New System.Drawing.Printing.PrintEventArgs())
End Try
End If
End Sub
'设置printDocument控件的PrintPage事件:
Private Sub PrintDocument1_PrintPage_1(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(PictureBox1.Image, 20, 20)
End Sub
2、 我看见你原帖的代码上 新建了一个空的image 之后就没有给image赋值了,然后又直接save成一个my.gif
很好奇这个my.gif怎么会有内容,就是一片空白啊
3、我假设你是想把picturebox1的图像保存,那应该用以下语句
PictureBox1.DrawToBitmap(bmp, New Rectangle(New Point(0, 0), PictureBox1.Size))
bmp.Save(“MY.GIF”, System.Drawing.Imaging.ImageFormat.GIF)
然后PictureBox2再load()
4、如果你是一个PrintDocument控件的话,双击之后PrintDocument1 之后自动生成的PrintPage事件里面添加上述代码是正确的。
[其他解释]