-
vb.net 教程 11-1 打印组件 4 PrintDocument 1
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
前几节讲了PrintDialog、PageSetupDialog,实际对应了打印机设置、页面设置,
但是,光靠设置是不能完成打印的。
本节讲的PrintDocument就是完成打印的组件。
PrintDocument提供了Print()方法,实际触发它的PrintPage()事件,在该事件中完成打印。
同时,PrintDocument组件还提供了EndPrint()事件,通过这个事件,可以获知打印完成情况。
直接看例子:
来看具体的代码:
'按下打印按钮
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
PrintDialog1.Document = PrintDocument1
If PrintDialog1.ShowDialog = DialogResult.OK Then
TextBox1.Text &= "开始打印" & ControlChars.CrLf
PrintDocument1.Print()
End If
End Sub
'打印页面
Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim g As Graphics = e.Graphics
g.DrawRectangle(New Pen(New SolidBrush(Color.Red), 2), New Rectangle(10, 0, 100, 60))
g.DrawString("这是一个打印的例子", New Font("宋体", 20), New SolidBrush(Color.Blue), New Point(10, 62))
g.DrawImage(PictureBox1.Image, New Rectangle(10, 100, 600, 400), New Rectangle(0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height), GraphicsUnit.Pixel)
End Sub
'打印完毕
Private Sub PrintDocument1_EndPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.EndPrint
TextBox1.Text &= "打印完毕"
End Sub
我先将代码做个分析,看完你就会觉得很简单:
1、先将PrintDialog1的Document属性设置为PrintDocument1,这一步也可以在vs编辑器中PrintDialog1的属性那里设置。
2、接着,显示打印对话框,如果是确定的话,那就调用PrintDocument1的Print()方法。
由于调用了Print()方法,引发PrintDocument1.PrintPage事件,
在PrintPage事件中才是真正的打印:
PrintPage的参数e,这是一个PrintPageEventArgs类,提供了6个属性:
Cancel:指示是否取消打印。
Graphics:只读,提供了在打印页面上绘图的Graphic。
HasMorePages:指示是否还要继续打印。
MarginBounds:只读,表示边距以内的页面部分的矩形区域。
PageBounds:只读,表示页面全部区域的矩形区域。
PageSettings:只读,当前页的页设置,是一个PageSettings类。
在代码中使用了Graphics属性,这也是打印必须要使用的,获得Graphics之后,就可以在这上面打印(作画)了。
最后打印完毕,触发PrintDocument1的EndPrint事件。
来看看运行情况:
按下打印按钮
由于我的电脑上没有真实的打印机,选择Xps虚拟打印机(这也是安装office后微软提供的虚拟打印机),按下打印对话框中的”打印“按钮,
接着就会出现保存文件对话框:
ok,保存到d盘,反正不是真实打印,名称随便。当然真实打印不会出现询问你保存到文件的。
好了,按下”保存“,马上就会提示打印完毕:
来看看刚才保存的”dd.oxps“文件,双击就可以使用默认的 xps查看器 打开:
再提醒一下,如果是真实打印机,那么就不会打印到文件。
学习更多vb.net知识,请参看 vb.net 教程 目录
————————————————
版权声明:本文为CSDN博主「VB.Net」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/uruseibest/article/details/73065844
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数