哪位兄弟把MSDN中的这个程序改一下,能打印出东西马上给分!不够再加!!
--------------------------------------------
private void printDocument1_PrintPage(object sender, 
System.Drawing.Printing.PrintPageEventArgs e)
{
   e.Graphics.FillRectangle(Brushes.Red, 
     new Rectangle(500, 500, 500, 500));
}
--------------------------------------------
这是一个打印矩形的程序,现在要求把“e.Graphics.FillRectangle(Brushes.Red, 
     new Rectangle(500, 500, 500, 500));”封装成一个方法,然后在这里调用,比如:
--------------------------------------------
方法method()是画图的,可以画出一个矩形,在private void printDocument1_PrintPage中怎么调用才能打印出一个矩形呢?
(现在我就遇到一个这样的问题,封装好的一个画图的方法,不知道在打印的时候该怎么调用~)
折磨我好久的问题了,请大家帮帮忙~~,谢谢了~~

解决方案 »

  1.   

    void DrawMyRectangle(Graphics dc,Rectangle r)
    {
       dc.FillRectangle(Brushes.Red, r);
    }private void printDocument1_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e)
    {
       DrawMyRectangle(e.Graphics,new Rectangle(500, 500, 500, 500));
    }
      

  2.   

    十分感谢2楼的兄弟,但是本人笨的要命,再问一下:
    下面这个方法是用来画图的,其中调用了一些控件(此控件也是自定义的)的参数用来生成表格,请问在打印的方法中该如何调用此方法呢?十分感谢~~
    --------------------------------------
    private void setup_table_control(Graphics g)
    {
    #region 设置控件属性
    int table_x = 120;
    int table_y = 150;
    int cell_height = 30;
    string cell_width = "150,150,,,,";
    table_receive.cell_height = 30;
    string s = "品    牌,型    号,颜    色,单价(元),数量(台),金额(元)"; // 设置2个变量来显示文本的位置,其他的文本都以此变量为基数进行增减
    int str_x = 120;
    int str_y = 80;
    // 绘制title
    table_receive.make_string("入库单",400,40,18,1,g); // 绘制表格之外的一些信息
    // 入库单号
    table_receive.make_string("入库单号:",str_x,str_y,10,0,g);
    table_receive.make_line(str_x + 65,str_y + 15,str_x + 165,str_y + 15,g);
    table_receive.make_string(this.bill_num,str_x + 65,str_y,10,0,g); // 设置具体数据
    // 入库单号完毕
    // 供应商
    table_receive.make_string("供 应 商:",str_x,str_y + 40,10,0,g);
    table_receive.make_line(str_x + 65,str_y + 55,str_x + 165,str_y + 55,g);
    table_receive.make_string(this.suppliers,str_x + 65,str_y + 40,10,0,g); // 设置具体数据
    // 供应商完毕 // 入库日期
    table_receive.make_string("入库日期:",str_x + 230,str_y + 40,10,0,g);
    table_receive.make_line(str_x + 295,str_y + 55,str_x + 415,str_y + 55,g);
    table_receive.make_string(this.date,str_x + 295,str_y + 40,10,0,g); // 设置具体数据
    // 入库日期绘制完毕
    // 入库类型
    table_receive.make_string("入库类型:",str_x + 470,str_y,10,0,g);
    table_receive.make_line(str_x + 535,str_y + 15,str_x + 635,str_y + 15,g);
    table_receive.make_string(this.receive_type,str_x + 535,str_y,10,0,g); // 设置具体数据
    // 入库类型绘制完毕 // 绘制库房
    table_receive.make_string("库    房:",str_x + 470,str_y + 40,10,0,g);
    table_receive.make_line(str_x + 535,str_y + 55,str_x + 635,str_y + 55,g);
    table_receive.make_string(this.depots,str_x + 535,str_y + 40,10,0,g); // 设置具体数据
    // 绘制库房完毕 // 绘制第一行

    table_receive.make_row(table_x,table_y,cell_width,s,g);
    // 绘制许多行
    table_receive.make_row(table_x,table_y + cell_height,cell_width,this.brands + "," + this.models + "," + this.color + "," + this.unit_price + "," + this.receive_num + ",",g);
    int i;
    for(i = 0;i < 3; i++)
    {
    table_receive.make_row(table_x,table_y + (i + 2) * cell_height,cell_width,",,,,,",g);
    } // 绘制合计的一行
    table_receive.make_row(table_x,table_y + ( i + 1) * cell_height,cell_width,"合    计:,,,," + this.receive_num + ",",g);
    // 合计一行绘制完毕 // 绘制其他信息
    int h = str_y + table_y + i * cell_height;
    // 制单
    table_receive.make_string("制    单:",str_x,h,10,0,g);
    table_receive.make_line(str_x + 65,h + 15,str_x + 165,h + 15,g);
    table_receive.make_string(this.operators,str_x + 65,h,10,0,g); // 设置具体数据
    // 制单完毕 // 库管员
    table_receive.make_string("库 管 员:",str_x + 470,h,10,0,g);
    table_receive.make_line(str_x + 535,h + 15,str_x + 635,h + 15,g);
    // 库管员完毕 // 备注
    table_receive.make_string("备    注:",str_x,h + 40,10,0,g);
    // 备注完毕 #endregion
    }
    --------------------------------------------------------------
    代码有点长,让各位费眼了~~~
      

  3.   

    在PrintPage里调用就可以了:
    private void printDocument1_PrintPage(object sender, 
    System.Drawing.Printing.PrintPageEventArgs e)
    {
       setup_table_control(e.Graphics);
    }
      

  4.   

    to: lijipan(多空) 
    我也是这么调用的,但是为什么就不能打印出表格呢?
    而我调用2楼兄弟的方法,就能打印出一个矩形~~~,为什么呢?
    感谢你的恢复~~
      

  5.   

    table_receive这个控件没有问题?
      

  6.   

    十分感谢大家的回复,呵呵,现在已经知道如何打印了,控件没问题,不过还有个问题,就是用SizeF得到的变量如何转换成int型呀?
      

  7.   

    就是用SizeF得到的变量如何转换成int型呀?
    string str = "123";
    int i=1;
    i = i + Convert.ToInt32(str);
    MessageBox.Show(i.ToString());
      

  8.   

    object sender, 
    System.Drawing.Printing.PrintPageEventArgs e作为method的参数不行]吗