C#列印原理其實就是產生MDI檔案,那麼什麼是MDI檔案呢?MDI是虛擬列印的文檔,系統碰到MDI的時候會自動以列印的方式處理。所以,不管用什麼模板,什麼方式;能在PrintPage事件處理中,產生一張要列印內容的圖片就OK了!
C#列印原理應用執行個體:
- #region 列印
-
- private void btnPrint_Click(object sender, EventArgs e)
-
- {
- //C#列印原理之預覽列印
- //PrintPreviewDialog ppd = new PrintPreviewDialog();
-
- PrintDocument pd = new PrintDocument();
-
- //C#列印原理之設定邊距
-
- Margins margin = new Margins(20, 20, 20, 20);
-
- pd.DefaultPageSettings.Margins = margin;
-
- ////C#列印原理之紙張設定預設
-
- //PaperSize pageSize = new PaperSize("First custom size", 800, 600);
-
- //pd.DefaultPageSettings.PaperSize = pageSize;
-
- //C#列印原理之列印事件設定
-
- pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
-
- //ppd.Document = pd;
-
- //ppd.ShowDialog();
-
- try
-
- {
-
- pd.Print();
-
- }
-
- catch (Exception ex)
-
- {
-
- MessageBox.Show(ex.Message, "列印出錯",
-
- MessageBoxButtons.OK, MessageBoxIcon.Error);
-
- pd.PrintController.OnEndPrint(pd, new PrintEventArgs());
-
- }
-
- }
-
- //C#列印原理之列印事件處理
-
- private void pd_PrintPage(object sender, PrintPageEventArgs e)
-
- {
-
- string date = lblDate.Text; //當前日期
-
- string flowId = lblFlowId.Text; //流水號
-
- string payDate = PayDate.Year.ToString() + "年" +
-
- PayDate.Month.ToString() + "月"; //應收年月
-
- string adminId = lblAdminId.Text; //操作員編號
-
- string baseExpense = lblBaseExpense.Text; //應交基本費用
-
- string fine = lblFine.Text; //罰款數目
-
- string upExpense = lblUpExpense.Text; //上月上餘
-
- string actualExpense = txtActualExpense.Text; //實際應交費用
-
- string chineseExpense = DecimalToChinese.ConvertSum(actualExpense);
- //實際應交費用的中文大寫
-
- //C#列印原理之讀取圖片模板
-
- Image temp = Image.FromFile(@"Receipts.jpg");
-
- GetResultIntoImage(ref temp, UserId, flowId, date, baseExpense,
-
- fine, upExpense, actualExpense, chineseExpense, payDate, adminId);
-
- int x = e.MarginBounds.X;
-
- int y = e.MarginBounds.Y;
-
- int width = temp.Width;
-
- int height = temp.Height;
-
- Rectangle destRect = new Rectangle(x, y, width, height);
-
- e.Graphics.DrawImage(temp, destRect, 0, 0, temp.Width,
-
- temp.Height, System.Drawing.GraphicsUnit.Pixel);
-
- }
-
- /// <summary>
-
- /// 將收費結果填充到圖片模板
- ///C#列印原理
- /// </summary>
-
- private void GetResultIntoImage(
-
- ref Image temp,
-
- string userId,
-
- string flowId,
-
- string currentDate,
-
- string baseExpense, string actualExpense,
-
- string chineseExpense,
-
- string payDate,
-
- string adminName)
-
- {
-
- //C#列印原理之讀取圖片模板
-
- Graphics g = Graphics.FromImage(temp);
-
- Font f = new Font("宋體", 12);
-
- Brush b = new SolidBrush(Color.Black);
-
- //C#列印原理之填充資料到圖片模板(位置要在製作圖片模板的時候度量好)
-
- g.DrawImage(temp, 0, 0, temp.Width, temp.Height);
-
- g.DrawString(userId, f, b, 168, 105);
-
- g.DrawString(UserName, f, b, 166, 134);
-
- g.DrawString(flowId, f, b, 535, 105);
-
- g.DrawString(currentDate, f, b, 535, 134);
-
- g.DrawString(baseExpense, f, b, 219, 202);
-
- g.DrawString(fine, f, b, 372, 202);
-
- g.DrawString(upExpense, f, b, 486, 202);
-
- g.DrawString(actualExpense, f, b, 596, 202);
-
- g.DrawString(chineseExpense, f, b, 196, 238);
-
- g.DrawString(payDate, f, b, 176, 269);
-
- g.DrawString(adminName, f, b, 497, 298);
-
- g.Dispose();
-
- }
C#列印原理的基本內容以及執行個體的解析就向你介紹到這裡,希望對你瞭解和學習C#列印原理有所協助。