C#之Windows自带打印功能的实现.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

C#之Windows自带打印功能的实现

目录一、打印控件二、系统API接口总结接着上回说,在使用打印机自带的SDK开发失利只后,经过一系列的实验,发现,这个打印机可以直接用我安装好的驱动直接进行打印操作,用word直接调整好字体之后打印是完全没有问题的,所以,推测,应该可以直接调用人家封装好的一些驱动进行打印,但是要怎么连接这些驱动呢?

一、打印控件

首先我们要提到的就是在C#中的一个关于打印的控件了,叫:PrintDocument,说他是一个控件,其实也就是一个关于windows打印的属性和代码的集合而已,但是结合着windows自带的一些对话框窗体,我们可以轻而易举的做一个打印的小程序。

我们要做的是,首先建立一个窗体,然后从工具箱中找到PrintDocument这个控件,然后添加上就可以了,可以看到控件的属性是这样的:

并没有什么特殊的地方,但是在方法里面却有一个很重要的方法,那就是他的printPage这个方法,这个就是每次触发这个控件的打印的内容核心,先贴上如下代码:

privatevoidpd1_PrintPage(objectsender,System.Drawing.Printing.PrintPageEventArgse)

Graphicsg=e.Graphics;//获得绘图对象

floatlinesPerPage=0;//页面的行号

floatyPosition=0;//绘制字符串的纵向位置

intcount=0;//行计数器

floatleftMargin=1;//左边距

floattopMargin=1;//上边距

stringline=;//行字符串

FontprintFont=this.textBox1.Font;//当前的打印字体

SolidBrushmyBrush=newSolidBrush(Color.Black);//刷子

linesPerPage=e.MarginBounds.Height/printFont.GetHeight(g);//每页可打印的行数

//逐行的循环打印一页

while(countlinesPerPage((line=lineReader.ReadLine())!=null))

yPosition=topMargin+(count*printFont.GetHeight(g));

g.DrawString(line,printFont,myBrush,leftMargin,yPosition,newStringFormat());

count++;

//注意:使用本段代码前,要在该窗体的类中定义lineReader对象:

//StringReaderlineReader=null;

//如果本页打印完成而line不为空,说明还有没完成的页面,这将触发下一次的打印事件。在下一次的打印中lineReader会

//自动读取上次没有打印完的内容,因为lineReader是这个打印方法外的类的成员,它可以记录当前读取的位置

if(line!=null)

e.HasMorePages=true;

else

e.HasMorePages=false;

//重新初始化lineReader对象,不然使用打印预览中的打印按钮打印出来是空白页

lineReader=newStringReader(textBox1.Text);//textBox是你要打印的文本框的内容

}

这里需要注意的是,使用了lineReader这个类的对象,这个对象的特点就是可以把对象中赋值的字符串按照行(以\r\n为准的换行)来进行字符串的获取,上面代码中的line就是指的获得的一行的数据。

我们用system.draw的Graphics里面的绘图对象来进行基本的字符绘图,最后把绘图对象打印到我们纸上,就是这个打印里面的内容。

所以,我们这个里面需要引入的一个引用就是usingSystem.Drawing.Printing;这样整个控件加代码就可以运行了,说明一下,这个打印的调用需要触发,使用的是如下代码:

lineReader=newStringReader(stb.ToString());//获取要打印的字符串

pd1.Print();//执行打印方法

另外说明一下,这里执行的时候,有一

文档评论(0)

139****7676 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档