VB6新手技术求助:如何实现屏幕及页面图片打印?
VB6 打印图片解决方案(针对新手)
嘿,我明白你作为VB6新手在打印图片时遇到的困惑了——不管是基础的图片打印,还是同一页面要安排两处打印位置,还有PrintForm弹出保存弹窗的糟心事,我来一步步帮你搞定!
先解决PrintForm弹出保存弹窗的问题
你碰到的这个弹窗,大概率是因为当前默认打印机被设置成了「打印到文件」(比如Microsoft Print to PDF这类虚拟打印机),或者你的窗体没正确关联到物理打印机。给你两个思路:
- 先去控制面板的设备和打印机里确认,默认打印机是你的物理打印机,而不是虚拟打印选项;
- 更推荐直接放弃
PrintForm——它的打印精度和可控性都很差,咱们用更灵活的Printer对象来实现精准打印。
实现同一页面打印两处图片的通用方案
下面给你写一个实用的通用打印方法,能精准控制两张图片在页面上的位置,完全适配你的需求:
通用打印函数
Private Sub PrintTwoImages(imgLeft As PictureBox, imgRight As PictureBox) On Error GoTo PrintError ' 设置打印机单位为缇(Twips),方便精准定位 Printer.ScaleMode = vbTwips ' 先打印空行拉开页边距 Printer.Print "" ' 打印第一张图片:页面左上角向右1000缇、向下1000缇的位置 Printer.PaintPicture imgLeft.Picture, 1000, 1000, imgLeft.Width, imgLeft.Height ' 打印第二张图片:和第一张横向错开4000缇,纵向位置一致 Printer.PaintPicture imgRight.Picture, 5000, 1000, imgRight.Width, imgRight.Height ' 提交打印任务 Printer.EndDoc Exit Sub PrintError: MsgBox "打印出错:" & Err.Description, vbExclamation, "错误提示" End Sub
调用这个函数适配你的两个打印选项
比如你有两个菜单按钮,分别对应不同的图片组合,直接调用就行:
' 第一个打印选项:打印图片组合A Private Sub mnuPrintSetA_Click() PrintTwoImages imgItem1, imgItem2 ' 传入你要打印的两个PictureBox控件 End Sub ' 第二个打印选项:打印图片组合B Private Sub mnuPrintSetB_Click() PrintTwoImages imgItem3, imgItem4 ' 换成另一组需要打印的图片控件 End Sub
补充小提示
Printer.PaintPicture是VB6里打印图片最可靠的方法,你可以调整坐标参数(比如把1000改成其他数值)来自由控制图片在页面上的位置;- 如果你的图片是直接从文件加载的,先把它放到一个隐藏的PictureBox里,再用上面的方法打印就行;
- 要是只需要打印单张图片,直接简化函数,只调用一次
PaintPicture就好。
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

