读书人

VB2005 怎么将PictureBox绘制的图形打

发布时间: 2012-12-15 15:16:03 作者: rapoo

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事件了吗??

[其他解释]
引用:
sosoben您好!是不是e.Graphics.DrawImage(PictureBox2.Image, 20, 20)不完整?
另外,
Private Sub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPa……


你是自己加的? 一般是双击自动生成或者在属性那里设的, 不过自己加的应该也没问题才对,用双击试试吧
[其他解释]
引用:
PictureBox1是图纸(图片),PictureBox2是将图纸展开并绘制的图形,是在 Private Sub PictureBox2_Paint中绘制的,其图形见下图:


打印代码如下:
Dim PrintDialog = New PrintDialog
Dim PrintDocument = New PrintD……

还有,我再看了你的代码,发现 PictureBox2.DrawToBitmap(Bitmap, rect)里面
bitmap没有赋值啊,你确定你的“mygif”是有东西的???
[其他解释]
sosoben您好!十分感谢您的热心!
1、PictureBox1是图纸(图片),是让人知道是个什么样的图形,与本代码无关。
2、“你是自己加的? 一般是双击自动生成或者在属性那里设的, 不过自己加的应该也没问题才对,用双击试试吧 ”
——是双击后生成的代码,如果用双击后自动生产的代码,打印机不动作。
3、“你确定你的“myg.if”是有东西的???”
——有图片,给出路径可以存储在任务位置。如果没有图片下面这句就会提示“找不到文件”PictureBox2.Load("my.gif") 。
再次表示感谢!!!








[其他解释]
引用:
Visual Basic code?1PictureBox2.Image = Image.FromFile (“my.gif”)
这样加载图像试试

还有,你的PrintDocument1_PrintPage_1 加入到你的PrintDocument 的 PrintPage事件了吗??

没有,不知怎样加?
[其他解释]
sosoben您好!
1、在PrintDocument1_PrintPage加载图片, Private Sub button1_Click没有反映。
2、Private Sub button1_Click加载图片,系统错误提示:没有找到。
是否“e.Graphics.DrawImage(Bitmap, 20, 20)”,或(“my.gif”)图片没有传递到button1打印中去?
[其他解释]
*.bmp
[其他解释]
(*.jpg)
[其他解释]
*.jpg"
open.FilterIndex = 2
open.RestoreDirectory = True

If open.ShowDialog() = DialogResult.OK Then
'PictureBox1.Image = Bitmap.FromFile(open.FileName)
PictureBox1.Load(open.FileName)
End If
End Sub

Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click


'执行打印()
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事件里面添加上述代码是正确的。

[其他解释]
引用:
1、我自己用这样的方法打印成功

Visual Basic code?12345678910111213141516171819202122232425262728293031 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Hand……


如果照抄我的程序还不行的话,会是别的问题了,我用的是VS2010,
引用了这些,但有很多是别的地方用的,这里没用
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
[其他解释]
sosoben:十分感谢,现在正在投标,晚上回去试试,明天反馈。
[其他解释]
我用的是2005

Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms 这些都有。








[其他解释]
sosoben您好!
绘制的图形是在PictureBox2中,PictureBox1是放在窗口(Form)上的,PictureBox1.image中放置的是原先加载的图片。用PDF打印机和你的上面的代码把PictureBox1.image原来加载的图片打了出来,见下图:

如果把PictureBox1改成PictureBox2,PDF打印已经到提示:“文件已经存在,是否覆盖”这一步,就是生成不了PDF文件。不知何故?
多次麻烦您了,再次表示感谢!!!

读书人网 >VB Dotnet

热点推荐