C#打印原理应用实例:

   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#打印原理有所帮助。

转载于:https://www.cnblogs.com/jreey/archive/2012/11/26/2789789.html

THE END
< <上一篇
下一篇>>