C#打印圖片


打印的原理是:生成mdi文件,系統碰到mdi的時候會自動以打印的方式處理。所以,不管用什么模板,什么方式;能在PrintPage事件處理中,生成一張要打印內容的圖片就OK了!

C#實現打印源碼如下:

#region 打印
         private  void btnPrint_Click( object sender, EventArgs e)
        {
             // 打印預覽
            
// PrintPreviewDialog ppd = new PrintPreviewDialog();
            PrintDocument pd =  new PrintDocument();
             // 設置邊距
            Margins margin =  new Margins( 20202020);
            pd.DefaultPageSettings.Margins = margin;
             /// /紙張設置默認
             // PaperSize pageSize = new PaperSize("First custom size", 800, 600);
            
// pd.DefaultPageSettings.PaperSize = pageSize;
            
// 打印事件設置
            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());
            }
        }
         // 打印事件處理
         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);  // 實際應交費用的中文大寫

   
// 讀取圖片模板
            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,  00, temp.Width, temp.Height, System.Drawing.GraphicsUnit.Pixel);
        }

         ///   <summary>
        
///  將收費結果填充到圖片模板
        
///   </summary>
         private  void GetResultIntoImage(
             ref Image temp,
             string userId,
             string flowId,
             string currentDate,
             string baseExpense,
             string fine,
             string upExpense,
             string actualExpense,
             string chineseExpense,
             string payDate,
             string adminName)
        {
             // 讀取圖片模板
            Graphics g = Graphics.FromImage(temp);

            Font f =  new Font( " 宋體 "12);
            Brush b =  new SolidBrush(Color.Black);
            
    // 填充數據到圖片模板(位置要在制作圖片模板的時候度量好)
            g.DrawImage(temp,  00, temp.Width, temp.Height);
            g.DrawString(userId, f, b,  168105);
            g.DrawString(UserName, f, b,  166134);
            g.DrawString(flowId, f, b,  535105);
            g.DrawString(currentDate, f, b,  535134);
            g.DrawString(baseExpense, f, b,  219202);
            g.DrawString(fine, f, b,  372202);
            g.DrawString(upExpense, f, b,  486202);
            g.DrawString(actualExpense, f, b,  596202);
            g.DrawString(chineseExpense, f, b,  196238);
            g.DrawString(payDate, f, b,  176269);
            g.DrawString(adminName, f, b,  497298);

            g.Dispose();
        }
         #endregion 

轉自:http: // hi.baidu.com/zhaogaoyan8/blog/item/d50fbf9a3f66c0bdc9eaf4c7.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM