C#调用打印机,打印图片

转自http://blog.csdn.net/yuanhong55/article/details/14447969


PrintPreviewDialog是打印预览对话框,需要传一个 printDocument给它才可以显示该对话框

PrintDocument是具体要打印的内容,可以是图片,也可以是加载文档,文字。


代码如下:

    private void bt_printImage_Click(object sender, EventArgs e)
        {
            //获取或设置一个值,该值指示是否发送到文件或端口  
            printDocument1.PrinterSettings.PrintToFile = true;
            //设置打印时横向还是纵向  
            printDocument1.DefaultPageSettings.Landscape = true;
            //打印预览  
            // PrintPreviewDialog ppd = new PrintPreviewDialog();  
            if (pictureBox1.Image == null)
            {
                return;
            }


            //设置边距  
            Margins margin = new Margins(20, 20, 20, 20);
            printDocument1.DefaultPageSettings.Margins = margin;
            ////纸张设置默认  
            //PaperSize pageSize = new PaperSize("First custom size", 800, 600);  
            //pd.DefaultPageSettings.PaperSize = pageSize;  
            //打印事件设置  
            printDocument1.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
            //ppd.Document = printDocument1;  
            // ppd.ShowDialog();  
            try
            {
                printDocument1.Print();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                printDocument1.PrintController.OnEndPrint(printDocument1, new PrintEventArgs());
            }  
        }


        private void pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            int x = e.MarginBounds.X;
            int y = e.MarginBounds.Y;
            int width = pictureBox1.Image.Width;
            int height = pictureBox1.Image.Height;
            Rectangle destRect = new Rectangle(x, y, width, height);
            e.Graphics.DrawImage(pictureBox1.Image, destRect, 0, 0, pictureBox1.Image.Width, pictureBox1.Image.Height, System.Drawing.GraphicsUnit.Pixel);
        }  

猜你喜欢

转载自blog.csdn.net/LANGGUANGCHENG/article/details/78668228