C#列印原理解析及執行個體操作

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.