C#打印原理解析及实例操作

开发 后端
C#打印原理是什么?这里向你介绍了C#打印原理的根本就是生成虚拟打印的文档MDI文件,那具体的应用实例是什么呢?那么本文就向你介绍详细内容。

C#打印原理其实就是生成MDI文件,那么什么是MDI文件呢?MDI是虚拟打印的文档,系统碰到MDI的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了!

C#打印原理应用实例:

  1. #region 打印  
  2.  
  3. private void btnPrint_Click(object sender, EventArgs e)  
  4.  
  5. {  
  6. //C#打印原理之打印预览  
  7. //PrintPreviewDialog ppd = new PrintPreviewDialog();  
  8.  
  9. PrintDocument pd = new PrintDocument();  
  10.  
  11. //C#打印原理之设置边距  
  12.  
  13. Margins margin = new Margins(20, 20, 20, 20);  
  14.  
  15. pd.DefaultPageSettings.Margins = margin;  
  16.  
  17. ////C#打印原理之纸张设置默认  
  18.  
  19. //PaperSize pageSize = new PaperSize("First custom size", 800, 600);  
  20.  
  21. //pd.DefaultPageSettings.PaperSize = pageSize;  
  22.  
  23. //C#打印原理之打印事件设置  
  24.  
  25. pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);  
  26.  
  27. //ppd.Document = pd;  
  28.  
  29. //ppd.ShowDialog();  
  30.  
  31. try 
  32.  
  33. {  
  34.  
  35. pd.Print();  
  36.  
  37. }  
  38.  
  39. catch (Exception ex)  
  40.  
  41. {  
  42.  
  43. MessageBox.Show(ex.Message, "打印出错",  
  44.  
  45.  MessageBoxButtons.OK, MessageBoxIcon.Error);  
  46.  
  47. pd.PrintController.OnEndPrint(pd, new PrintEventArgs());  
  48.  
  49. }  
  50.  
  51. }  
  52.  
  53. //C#打印原理之打印事件处理  
  54.  
  55. private void pd_PrintPage(object sender, PrintPageEventArgs e)  
  56.  
  57. {  
  58.  
  59. string date = lblDate.Text; //当前日期  
  60.  
  61. string flowId = lblFlowId.Text; //流水号  
  62.  
  63. string payDate = PayDate.Year.ToString() + "年" +   
  64.  
  65. PayDate.Month.ToString() + "月"//应收年月  
  66.  
  67. string adminId = lblAdminId.Text;   //操作员编号  
  68.  
  69. string baseExpense = lblBaseExpense.Text; //应交基本费用  
  70.  
  71. string fine = lblFine.Text;   //罚款数目  
  72.  
  73. string upExpense = lblUpExpense.Text;   //上月上余  
  74.  
  75. string actualExpense = txtActualExpense.Text;   //实际应交费用  
  76.  
  77. string chineseExpense = DecimalToChinese.ConvertSum(actualExpense);    
  78.  //实际应交费用的中文大写  
  79.  
  80. //C#打印原理之读取图片模板  
  81.  
  82. Image temp = Image.FromFile(@"Receipts.jpg");  
  83.  
  84. GetResultIntoImage(ref temp, UserId, flowId, date, baseExpense,  
  85.  
  86.  fine, upExpense, actualExpense, chineseExpense, payDate, adminId);  
  87.  
  88. int x = e.MarginBounds.X;  
  89.  
  90. int y = e.MarginBounds.Y;  
  91.  
  92. int width = temp.Width;  
  93.  
  94. int height = temp.Height;  
  95.  
  96. Rectangle destRect = new Rectangle(x, y, width, height);  
  97.  
  98. e.Graphics.DrawImage(temp, destRect, 0, 0, temp.Width,  
  99.  
  100.  temp.Height, System.Drawing.GraphicsUnit.Pixel);  
  101.  
  102. }  
  103.  
  104. /// <summary>  
  105.  
  106. /// 将收费结果填充到图片模板  
  107. ///C#打印原理  
  108. /// </summary>  
  109.  
  110. private void GetResultIntoImage(  
  111.  
  112. ref Image temp,  
  113.  
  114. string userId,  
  115.  
  116. string flowId,  
  117.  
  118. string currentDate,  
  119.  
  120. string baseExpense, string actualExpense,  
  121.  
  122. string chineseExpense,  
  123.  
  124. string payDate,  
  125.  
  126. string adminName)  
  127.  
  128. {  
  129.  
  130. //C#打印原理之读取图片模板  
  131.  
  132. Graphics g = Graphics.FromImage(temp);  
  133.  
  134. Font f = new Font("宋体", 12);  
  135.  
  136. Brush b = new SolidBrush(Color.Black);  
  137.  
  138. //C#打印原理之填充数据到图片模板(位置要在制作图片模板的时候度量好)  
  139.  
  140. g.DrawImage(temp, 0, 0, temp.Width, temp.Height);  
  141.  
  142. g.DrawString(userId, f, b, 168, 105);  
  143.  
  144. g.DrawString(UserName, f, b, 166, 134);  
  145.  
  146. g.DrawString(flowId, f, b, 535, 105);  
  147.  
  148. g.DrawString(currentDate, f, b, 535, 134);  
  149.  
  150. g.DrawString(baseExpense, f, b, 219, 202);  
  151.  
  152. g.DrawString(fine, f, b, 372, 202);  
  153.  
  154. g.DrawString(upExpense, f, b, 486, 202);  
  155.  
  156. g.DrawString(actualExpense, f, b, 596, 202);  
  157.  
  158. g.DrawString(chineseExpense, f, b, 196, 238);  
  159.  
  160. g.DrawString(payDate, f, b, 176, 269);  
  161.  
  162. g.DrawString(adminName, f, b, 497, 298);  
  163.  
  164. g.Dispose();  
  165.  
  166. }  

C#打印原理的基本内容以及实例的解析就向你介绍到这里,希望对你了解和学习C#打印原理有所帮助。

【编辑推荐】

  1. C#打印设置实例解析
  2. C#Lpt端口打印类的操作浅析
  3. C#打印设置实现源码详解
  4. C#打印控件的使用实例浅析
  5. C#打印条码操作的实例浅析
责任编辑:仲衡 来源: 网易博客
相关推荐

2009-08-26 12:14:44

C#打印设置

2009-08-19 16:09:15

C#操作Access

2009-08-26 13:48:31

C#打印条码

2009-08-24 10:37:27

C# 泛型

2009-09-01 13:59:01

C#操作Excel

2009-08-31 10:18:00

C#静态变量定义C#静态变量

2009-09-09 14:40:15

C# XML解析

2009-08-26 11:32:37

C#打印文档

2009-08-26 11:07:36

C#打印窗体

2009-08-26 09:22:44

C#实现打印功能

2009-09-07 06:31:32

C#窗体移动

2009-08-31 18:17:32

C#接口编程

2009-08-26 14:31:08

C#打印文件

2009-08-18 10:47:40

C#枚举类型

2009-09-09 13:57:28

C# XML解析

2009-08-18 13:49:21

C# 操作Excel

2009-08-20 11:01:51

C#操作内存

2009-08-26 13:36:33

C#打印控件

2009-09-03 15:43:21

C#时间计算

2009-09-03 09:16:35

C#递归函数
点赞
收藏

51CTO技术栈公众号