当前位置:编程学习 > C#/ASP.NET >>

C# 怎样打印图片及文字信息

如题,,各位大哥谁做过,请帮忙啊。。。。。
--------------------编程问答-------------------- PrintDocument组件 --------------------编程问答-------------------- 有打印类就可以 --------------------编程问答-------------------- 用水晶报表应该可以插入一个图片,用lable也能打印文字

用微软自己带的报表也可以。想了想办法其实很多

如果想套打的话, printDocument1_PrintPage也能做到,文字和图片就用绘图的方式直接画到打印机上:

如下:(大概就这么一个意思,具体的自己可以去网上查查)


 private void button1_Click(object sender, EventArgs e)//另外一种套打
        {
            PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
            printPreviewDialog.Document = printDocument1;

            #region //设置纸张大小

            PaperSize pkCustomSize1 = new PaperSize("First   custom   size ", 800, 500);
            printDocument1.PrintPage += new PrintPageEventHandler(this.printDocument1_PrintPage);
            printDocument1.DefaultPageSettings.PaperSize = pkCustomSize1;//将自定义的Papersize赋给PrintDocument 
            printDocument1.DefaultPageSettings.PaperSize.Height = 500;//您可以修改pagesize的大小 
            printDocument1.DefaultPageSettings.PaperSize.Width = 800;

            #endregion


            string strtemp = "";
            for (int i = 0; i < 20; i++)
            {
                strtemp = dataGridView1[0, i].Value.ToString() + "-      " + dataGridView1[4, i].Value.ToString() + "-      " + dataGridView1[1, i].Value.ToString() + "\n" + strtemp;
            }

            lineReader = new StringReader(strtemp);
            try
            {
                printPreviewDialog.ShowDialog();
            }
            catch (Exception excep)
            {
                MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }
    
        private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {
            Graphics g = e.Graphics; //获得绘图对象

            #region //程序编写时需要用到,显示图像以及坐标

            Bitmap pic = new Bitmap("e:\\fapiao.jpg");
            g.DrawImage(pic, 60, 90);
            /*
                        for (int i = 0; i < e.PageSettings.PaperSize.Height; i = i + 15)
                        {
                            g.DrawLine(new Pen(Color.Brown, (float)0.20), 0, i, e.PageSettings.PaperSize.Width, i);
                            g.DrawString(i.ToString(), new Font("宋体", 7), Brushes.Black, 10, i);
                        }

                        for (int i = 0; i < e.PageSettings.PaperSize.Width; i = i + 15)
                        {
                            g.DrawLine(new Pen(Color.Brown, (float)0.20), i, 0, i, e.PageSettings.PaperSize.Height);
                            g.DrawString(i.ToString(), new Font("宋体", 7), Brushes.Black, i, 10);
                        }
              //*/
            #endregion



            g.DrawString("济南金钟公司", new Font("宋体", 10), Brushes.Black, 210, 195);
            g.DrawString("123456778668", new Font("宋体", 10), Brushes.Black, 210, 210);
            g.DrawString("123456778668", new Font("宋体", 10), Brushes.Black, 585, 195);
            g.DrawString("2010-11-12 13:13:13", new Font("宋体", 10), Brushes.Black, 585, 210);

            float linesPerPage = 0; //页面的行号
            float yPosition = 0; //绘制字符串的纵向位置
           
            float leftMargin = e.MarginBounds.Left; //左边距
            float topMargin = e.MarginBounds.Top; //上边距

            FontFamily fontFamily = new FontFamily("宋体");
            Font printFont = new Font(
               fontFamily,
               16,
               FontStyle.Regular,
               GraphicsUnit.Pixel);

            linesPerPage = 5;//e.MarginBounds.Height / printFont.GetHeight(g);//每页可打印的行数
            int count = 0;
            

            string line = null; //行字符串
            SolidBrush myBrush = new SolidBrush(Color.Black);//刷子

            while (count < linesPerPage && ((line = lineReader.ReadLine()) != null))
            {
                yPosition = topMargin + (count * printFont.GetHeight(g));
                g.DrawString(line, printFont, myBrush, leftMargin + 60, yPosition + 170, new StringFormat());
                count++;
            }
            
            if (PageCount <6)
            {
                e.HasMorePages = true;
            }
            else
            {
                e.HasMorePages = false;
            }
            
            PageCount++;  
        }




补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,