各位博友,好久没有更新博客了,前两天一个交流中的好友研究了一套winform中的打印功能,再此向这位好友【杭州-andy】表示感谢,感谢他提供这么好的素材让大家学习。
直入主题,实现这个打印功能,只需要3个主要的打印控件,printDocument,printDialog,printPreviewDialog。
先介绍一下整体思路:
A首先打开VS2005新建项目,为默认的Form1设置你已经做好的发票模板图片为背景。
B在需要使用动态信息的地方放入TextBox控件,动态显示要打印的信息,当然你用Lable也可以,我这位朋友在开发中使用的是TextBox这里我就用TextBoX来讲了。
C在PrintDocument控件的PrintPage事件里面编写代码,将整个动态内容结合到背景图片,整合为一张图片,具体代码如下:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics; //先建立画布
int x = 80;
int y = 60;
g.DrawImage(this.BackgroundImage, 50, 50);
foreach (Control item in this.Controls)
{
if (item is TextBox)
{
Control tx = (item as Control);
g.DrawString(tx.Text, tx.Font, Brushes.Black, tx.Left + x, tx.Top + y);
}
}
}
然后在预览按钮Click事件里面添加如下代码:
//注意指定其Document(获取或设置要预览的文档)属性
this.printPreviewDialog1.Document = this.printDocument1;
//ShowDialog方法:将窗体显示为模式对话框,并将当前活动窗口设置为它的所有者
this.printPreviewDialog1.ShowDialog();
自此,一个完整的打印功能就实现了,虽然看似简单,但是还是倾注了一些精力,再次感谢Andy提供源码,有需要的朋友可以下载源码观看,源码将在后面上传
源码下载地址:http://download.csdn.net/detail/fwj380891124/4647497
强烈建议系统管理员推荐至CSDN首页
大家有什么好的打印也可以推荐下,大家互相学习,这样我们才能更加强大。Thank You!