我正想做一个单据设计器,用户可以自己设计单据格式,设计完毕后用户可以将设计好的单据打印出来。
请问这里将Windows 窗口显示的内容从打印机打印出来呢,请高手给个思路

解决方案 »

  1.   

    建一个printdocument对象,然后在里面画,如果要打印窗口显示的图像的话,可以通过取窗口的dc句柄,再将其直接画入printdocument对象中
      

  2.   

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
    //获得绘制的对象
    Graphics g=e.Graphics;
    //以页中的行数
    float linepage=0;
    //待绘制文本的纵向座标
    float yposition=0;
    //行计数
    int count=0;
    //左边界
    float leftmargin=e.MarginBounds.Left;
    //顶边界
    float topmargin=e.MarginBounds.Top;
    //字符串流
    string lines=null;
    //根据页面的高度和字体的高度计算一页中可以打印的行数
    linepage=e.MarginBounds.Height/this.Font.GetHeight(g);
    //每次从字符串流中读取一行并打印
    while(count<linepage&&((lines=this.richTextBox1.Text)!=null))
    {
    //计算这一行显示的位置
    yposition=topmargin+(count*this.Font.GetHeight(g));
    //绘制文本
    g.DrawString(lines,this.Font,System.Drawing.Brushes.Black,leftmargin,yposition,new StringFormat());
    count++;

                               
    }
    //如果有多行则打印多页
    if(lines!=null)
    {
    e.HasMorePages=true;
    }
    else
    {
    e.HasMorePages=false;
    }
    }
      

  3.   

    使用Form.DrawToBitmap 然后在PrintDocument里直接 去绘制获取的Bitmap
      

  4.   

    http://topic.csdn.net/u/20080229/18/ecf18e31-6c5e-427d-83a3-88d8d43596bf.html有人问过了。
      

  5.   

    问题解决了,下面是一个打印控件的类,类很好,很强大,相当好用。http://www.codeproject.com/KB/printing/PrintingFormReport.aspx