关键字:C# .NET C#打印 打印技术内容摘要:从原理上解释一下采用C#打印的应用,这里以最常用的C/S模式作为范例,首先,获取要打印的数据,根据固定的模版进行数据排版。然后,简单设置打印属性以及预览数据。最后,进行打印。 首先,从原理上解释一下关于使用C#开发打印的应用。这里以最常用的C/S模式作为范例。 .NetFrameWork为打印提供了System.Drawing;、System.Drawing.Printing;和System.Windows.Froms;命名空间,在这个命名空间里面有以下几个常用的重要类分别是: a) PrintDocment类主要用来绘制打印页面并将打印页面发送到打印机; 1) 常用属性: l DefaultPageSettings: 获取或设置页设置,这些页设置用作要打印的所有页的默认设置。 l DocumentName: 获取或设置打印文档时要显示的文档名。 l PrinterSettings: 获取或设置对文档进行打印的打印机。 2) 常用方法: l Print(): 开始文档的打印进程。 l OnPrintPage(): 引发 PrintPage 事件。该事件在某页打印之前被调用。 3) 常用事件 l BeginPrint: 在调用 Print 方法时并且在打印文档的第一页之前发生。 l EndPrint: 打印完文档的最后一页时发生。 l PrintPage: 当需要为当前页打印的输出时发生。 b) PageSetupDialog类用于设置简单的打印设置 1) 常用属性 l AllowMargins: 获取或设置一个值,该值指示是否启用对话框的边距部分。 l AllowOrientation: 获取或设置一个值,该值指示是否启用对话框的方向部分(横向对纵向)。 l AllowPaper: 获取或设置一个值,该值指示是否启用对话框的纸张部分(纸张大小和纸张来源)。 l AllowPrinter: 获取或设置一个值,该值指示是否启用“打印机”按钮。 l Document: 获取或设置一个值,指示从中获取页面设置的 PrintDocument。 l PageSettings: 获取或设置一个值,该值指示要修改的页设置。 l PrinterSettings: 获取或设置用户单击对话框中“打印机”按钮时修改的打印机设置。 l ShowHelp: 获取或设置一个值,该值指示“帮助”按钮是否可见。 l ShowNetwork: 获取或设置一个值,该值指示“网络”按钮是否可见。 2) 常用方法 l Reset(): 已重写。 将所有选项重新设置为其默认值。 l ShowDialog(): 已重载。 运行通用对话框。 c) PrintPreviewDialog类用于打印预览 1) 常用属性 l DesktopBounds: 获取或设置 Windows 桌面上窗体的大小和位置。(从 Form 继承。) l DesktopLocation: 获取或设置 Windows 桌面上窗体的位置。(从 Form 继承。) l DialogResult: 获取或设置窗体的对话框结果。 l Document: 获取或设置要预览的文档。 l Enabled: 获取或设置一个值,该值指示是否已启用该控件。 l Height: 获取或设置控件的高度。 l Location: 获取或设置该控件的左上角相对于其容器的左上角的坐标。 l Width: 获取或设置控件的宽度。(从 Control 继承。) l WindowState: 获取或设置窗体的窗口状态。 2) 常用方法 l ShowDialog(): 已重载。将窗体显示为模式对话框。下面我们来看一下打印的基本步骤: 1) 声明一个PrintDocment: 命名空间:System.Drawing.Printing; 代码: PrintDocment objPrintDocment=new PrintDocment(); objPrintDocment.PrintPage+=new PrintPageEventHandler (Print_PrintPage); 2) 调用打印属性设置窗口命名空间:System.Windows.Froms; 代码: //初始化要显示的设置窗口 PageSetupDialog objPageSetupDialog = new PageSetupDialog(); //获取文档 objPageSetupDialog.Document = this._pDocument; //显示窗口s objPageSetupDialog.ShowDialog(); 3) 调用打印预览窗口 //初始化要预览窗口 PrintPreviewDialog objPrintPreviewDialog = newPrintPreviewDialog(); //获取要预览的文档 objPrintPreviewDialog.Document = objDocument; //显示预览窗口 objPrintPreviewDialog.ShowDialog(); 4) 添加Print_PrintPage(object sender, PrintPageEventArgs e)的代码 //这里主要实现打印功能利用Graphics类的 DrawLine()方法画线,DrawString()方法写入文本; //打印表里的数据 g.DrawString(cellValue, _contentFont, _contentForeColor, new PointF(linex, liney + _cellTopMargin)); //标题下面的一条线 g.DrawLine(_linePen, new PointF(_leftMargin, lineBeginY), new PointF(pageWidth - _rightMargin, lineBeginY)); 现面来看一下一个具体的、简单的事例:将用户输入的数据在界面上打印出来. public partial class FTest : Form { PrintDocument objDocument; public FTest () { InitializeComponent(); } private void FTest _Load(object sender, EventArgs e) { objDocument = new PrintDocument(); //当需要为当前页打印的输出时发生 objDocument.PrintPage += new PrintPageEventHandler(objDocument_PrintPage); } void objDocument_PrintPage(object sender, PrintPageEventArgs e) { string objString = this.textBox1.Text; //获取用于绘制页面的Graphics的对象 Graphics g= e.Graphics; //向页面输出一行文字 g.DrawString(objString, new Font("宋体", 24), new SolidBrush(Color.Black), new PointF((e.PageBounds.Width - g.MeasureString(this.textBox1.Text, new Font("宋体", 24)).Width) / 2, e.PageBounds.Height / 8)); g.DrawString(objString, new Font("宋体", 24), new SolidBrush(Color.Black), new PointF((e.PageBounds.Width - g.MeasureString(this.textBox1.Text, new Font("宋体", 24)).Width) / 2, e.PageBounds.Height / 8+48)); g.DrawString(objString, new Font("宋体", 24), new SolidBrush(Color.Black), new PointF((e.PageBounds.Width - g.MeasureString(this.textBox1.Text, new Font("宋体", 24)).Width) / 2, e.PageBounds.Height / 8 + 96)); g.DrawString(objString, new Font("宋体", 24), new SolidBrush(Color.Black), new PointF((e.PageBounds.Width - g.MeasureString(this.textBox1.Text, new Font("宋体", 24)).Width) / 2, e.PageBounds.Height / 8 + 144)); g.Dispose(); } private void button1_Click(object sender, EventArgs e) { //初始化要显示的设置窗口 PageSetupDialog objPageSetupDialog = new PageSetupDialog(); //获取文档 objPageSetupDialog.Document = this.objDocument; //显示窗口 objPageSetupDialog.ShowDialog(); //初始化要预览窗口 PrintPreviewDialog objPrintPreviewDialog = new PrintPreviewDialog(); //获取要预览的文档 objPrintPreviewDialog.Document = objDocument; objPrintPreviewDialog.Width = 800; objPrintPreviewDialog.Height = 600; //显示预览窗口 objPrintPreviewDialog.ShowDialog(); } } 总结:通过上面的事例我们可以知道C#主要使用其自带的类库PrintDocment类的PrintPage事件来实现的打印的,我们可以通过来利用此事件函数来打印我们想要的结果.
关于C#打印技术
最新推荐文章于 2024-05-08 23:52:14 发布