paint的代码贴上来,否则大家怎么给你看呀?!

解决方案 »

  1.   

    #region//竖向打印
    {
    wRect=(w-xDelta*3)/4;
    hRect=(h-yDelta*3)/4;
    SizeF size=new  SizeF(wRect,hRect);
    Pen p=new Pen(Color.Gray,1); xScale=Convert.ToSingle(wRect/panel1.Width);//数据库中读出的矩形的缩小比例
    yScale=Convert.ToSingle(hRect/panel1.Height);    //每个ye面的头说明
    Font newsFont1=new Font("黑体" ,14);
    string strstr=LogicLevel.corp_name.ToString()+LogicLevel.pubdate.ToShortDateString()+this.toolBar1.Buttons[0].Text.Substring(0,4)+"版面预览";
    g.DrawString(strstr,newsFont1,Brushes.Black,60,10);
    //每个也面的尾说明
    strstr="打印人:"+LogicLevel.username+"     "+DateTime.Now.Date.ToShortDateString()+"      第 "+ currentPage+" 页/共 "+pageCount+" 页"   ;
    g.DrawString(strstr,newsFont1,Brushes.Black,30,Convert.ToInt32(ev.PageBounds.Height*25.4/100)-15);

                                //读出所有的新闻和广告-注意要变化bmnum 是其顺序从头算起
    // DataSet myset1=new DataSet();

    string sql="";
    int bmnumm=0; DataTable tnews=new DataTable(); tnews.Columns.Add("leftx",System.Type.GetType("System.Int32"));
    tnews.Columns.Add("lefty",System.Type.GetType("System.Int32"));
    tnews.Columns.Add("width",System.Type.GetType("System.Int32"));
    tnews.Columns.Add("height",System.Type.GetType("System.Int32"));
    tnews.Columns.Add("text",System.Type.GetType("System.String"));
    tnews.Columns.Add("bmnum",System.Type.GetType("System.Int32"));

    for(int i=0;i<LogicLevel.dmItemsValue.Count;i++)
    {

    sql="select  leftx,lefty,width,height,text,bmnum  from hbnews_sj where itemId="+(int)LogicLevel.dmItemsId[i]; ConDB.ConnectDB();
    DataSet newset=ConDB.ExecuteGet(sql);
        ConDB.CloseDB(); int countt=newset.Tables[0].Rows.Count;     
    for(int ii=0;ii<countt;ii++)
    {
    DataRow newrow=tnews.NewRow();
    newrow["leftx"]=newset.Tables[0].Rows[ii].ItemArray[0];
    newrow["lefty"]=newset.Tables[0].Rows[ii].ItemArray[1];
    newrow["width"]=newset.Tables[0].Rows[ii].ItemArray[2];
    newrow["height"]=newset.Tables[0].Rows[ii].ItemArray[3];
    newrow["text"]=newset.Tables[0].Rows[ii].ItemArray[4];
    newrow["bmnum"]=Convert.ToInt32(newset.Tables[0].Rows[ii].ItemArray[5])+bmnumm;    
                                       
    tnews.Rows.Add(newrow);
      }

         bmnumm+=(int)LogicLevel.dmItemsValue[i];

    }                      
    DataTable newsTable=tnews; DataTable tadv=new DataTable(); tadv.Columns.Add("leftx",System.Type.GetType("System.Int32"));
    tadv.Columns.Add("lefty",System.Type.GetType("System.Int32"));
    tadv.Columns.Add("width",System.Type.GetType("System.Int32"));
    tadv.Columns.Add("height",System.Type.GetType("System.Int32"));
    tadv.Columns.Add("topic",System.Type.GetType("System.String"));
    tadv.Columns.Add("bmnum",System.Type.GetType("System.Int32"));

         bmnumm=0; for(int i=0;i<LogicLevel.dmItemsValue.Count;i++)
    {

    sql="select  a.topx,a.topy,a.width,a.height,b.adv_topic,a.bmnum  from hbadv_sj a join  adv b on a.adv_id=b.adv_id where itemId="+(int)LogicLevel.dmItemsId[i]; ConDB.ConnectDB();
    DataSet advset=ConDB.ExecuteGet(sql);
    ConDB.CloseDB(); int countt=advset.Tables[0].Rows.Count;     
    for(int ii=0;ii<countt;ii++)
    {
    DataRow newrow=tadv.NewRow();
    newrow["leftx"]=advset.Tables[0].Rows[ii].ItemArray[0];
    newrow["lefty"]=advset.Tables[0].Rows[ii].ItemArray[1];
    newrow["width"]=advset.Tables[0].Rows[ii].ItemArray[2];
    newrow["height"]=advset.Tables[0].Rows[ii].ItemArray[3];
    newrow["topic"]=advset.Tables[0].Rows[ii].ItemArray[4];
    newrow["bmnum"]=Convert.ToInt32(advset.Tables[0].Rows[ii].ItemArray[5])+bmnumm;    
                                       
    tadv.Rows.Add(newrow);   }

    bmnumm+=(int)LogicLevel.dmItemsValue[i];

    }                      
    DataTable advTable=tadv;
    int newsRowCount=newsTable.Rows.Count;// 该天所有的新闻条数
    int advRowCount=advTable.Rows.Count;  // 该天所有广告条数 for(int row=0;row<4;row++)
    for(int col=0;col<4;col++)
    {
         
                                    float lleft,ltop;//每个版面的左上坐标
    lleft=left+col*(wRect+xDelta);
    ltop=top+row*(size.Height+yDelta);
    int bmnum=(currentPage-1)*16+row*4+col;//当前操作的版面数
                                     
    if(bmnum<LogicLevel.getAllBmCount())
    {
    g.DrawRectangle(p,lleft,ltop,size.Width,size.Height);//画版面矩形
    //添加文字说明
    Font newsFont2=new Font("黑体" ,10);

       string strstrstr=LogicLevel.getDesc(bmnum);//得到如  A1  A2 等

    g.DrawString(strstrstr,newsFont2,Brushes.Black,lleft,ltop-5);
    } for(int ii=0;ii<newsRowCount;ii++)//画版面上新闻矩形
    {
    if(bmnum==Convert.ToInt32(newsTable.Rows[ii].ItemArray[5].ToString()))
    {
    float newsLeft=Convert.ToSingle(newsTable.Rows[ii].ItemArray[0].ToString())*xScale;//新闻的在打印纸张上的位置
    float newsTop=Convert.ToSingle(newsTable.Rows[ii].ItemArray[1].ToString())*yScale;
    float newsWidth=Convert.ToSingle(newsTable.Rows[ii].ItemArray[2].ToString())*xScale;
    float newsHeight=Convert.ToSingle(newsTable.Rows[ii].ItemArray[3].ToString())*yScale;
    g.DrawRectangle(p,lleft+newsLeft,ltop+newsTop,newsWidth,newsHeight);//画矩形
    g.FillRectangle(Brushes.Khaki,lleft+newsLeft,ltop+newsTop,newsWidth,newsHeight);

    Font newsFont=new Font("黑体" ,10);
    g.DrawString(newsTable.Rows[ii].ItemArray[4].ToString().Trim(),newsFont,Brushes.Black,lleft+newsLeft,ltop+newsTop); } }
    for(int ii=0;ii<advRowCount;ii++)//画版面上广告矩形
    {
    if(bmnum==Convert.ToInt32(advTable.Rows[ii].ItemArray[5].ToString()))
    {
    float advLeft=Convert.ToSingle(advTable.Rows[ii].ItemArray[0].ToString())*xScale;//广告的在打印纸张上的位置
    float advTop=Convert.ToSingle(advTable.Rows[ii].ItemArray[1].ToString())*yScale;
    float advWidth=Convert.ToSingle(advTable.Rows[ii].ItemArray[2].ToString())*xScale;
    float advHeight=Convert.ToSingle(advTable.Rows[ii].ItemArray[3].ToString())*yScale;
    g.DrawRectangle(p,lleft+advLeft,ltop+advTop,advWidth,advHeight);//画矩形
    Font advFont=new Font("黑体" ,6); ClassAdv thisadv=new ClassAdv();
    Color color=thisadv.getColor();
    SolidBrush b=new SolidBrush(color); g.FillRectangle(b,lleft+advLeft,ltop+advTop,advWidth,advHeight);

    string str=advTable.Rows[ii].ItemArray[4].ToString().Trim();
    g.DrawString(str,advFont,Brushes.Black,lleft+advLeft,ltop+advTop);
    }


    }