zoukankan      html  css  js  c++  java
  • GDI+画打印内容

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        DataGridViewRow dr = this.dataGridView1.SelectedRows[0];
        Graphics g = e.Graphics;//获得绘图对象
        g.PageUnit = GraphicsUnit.Display;
        float yPosition = 0;    //绘制字符串的纵向位置
        float xp = MeasureStringWidth("用户名称:");

        float leftMargin = e.MarginBounds.Left + tx / 10 * 39; //左边距
        float topMargin = e.MarginBounds.Top + ty / 10 * 39; //上边距   
        float p1 = leftMargin + xp + xp / 3.5f;
        float p2 = p1 + 5.5f * 39;
        float p3 = p2 + 5.5f * 39;

        Font printFont = new Font(fontName, float.Parse(fontSize));//当前的打印字体
        //Font printFont = new Font("宋体", 9);
        SolidBrush myBrush = new SolidBrush(Color.Black);//刷子 
        //line 1
        yPosition = topMargin;
        float noPosition=leftMargin + e.MarginBounds.Width - MeasureStringWidth("No:5090426001") + 39 * 1;
        g.DrawString("NO:" + dr.Cells[0].Value.ToString(), printFont, myBrush, noPosition, topMargin - 39 * 0.1f, new StringFormat());
        //line 2
        yPosition = topMargin + (0.8f * printFont.GetHeight(g));
        float userPosition=leftMargin + xp - 39 * 0.3f;
        float year=leftMargin + xp * 2 + 1.3f * 39;
        float month=year + xp / 4 + 39;
        float day=month + 39 * 1;
        float userNum = leftMargin + xp * 2 + 3.3f * 39 + xp / 4 + 39 * 1.5f + xp * 2;
        DateTime ticketDate=Convert.ToDateTime(dr.Cells["开票日期"].Value.ToString());
        g.DrawString(dr.Cells["用户"].Value.ToString(), printFont, myBrush, userPosition, yPosition, new StringFormat());
         g.DrawString(ticketDate.Year.ToString(), printFont, myBrush, year, yPosition, new StringFormat());
        g.DrawString(ticketDate.Month.ToString(), printFont, myBrush, month, yPosition, new StringFormat());
        g.DrawString(ticketDate.Day.ToString(), printFont, myBrush, day, yPosition, new StringFormat());
        g.DrawString(dr.Cells["用户编号"].Value.ToString(), printFont, myBrush, userNum, yPosition, new StringFormat());
        //line 3
        yPosition = topMargin + (3 * printFont.GetHeight(g));
        g.DrawString(dr.Cells["支口"].Value.ToString(), printFont, myBrush, p1, yPosition, new StringFormat());
        g.DrawString(dr.Cells["开启尺度"].Value.ToString(), printFont, myBrush, p2, yPosition, new StringFormat());
        g.DrawString(dr.Cells["时流量"].Value.ToString(), printFont, myBrush, p3,yPosition, new StringFormat());
        //line 4
        yPosition = topMargin + (5.5f * printFont.GetHeight(g));
        g.DrawString(dr.Cells["放水量"].Value.ToString(), printFont, myBrush, p1, yPosition, new StringFormat());
        g.DrawString(dr.Cells["开启时间"].Value.ToString(), printFont, myBrush, p2-39*0.2f, yPosition, new StringFormat());
        g.DrawString(dr.Cells["关闭时间"].Value.ToString(), printFont, myBrush, p3-39*0.3f, yPosition, new StringFormat());
        //line 5
        yPosition = topMargin + (8.0f * printFont.GetHeight(g));
        g.DrawString(dr.Cells["灌溉面积"].Value.ToString(), printFont, myBrush, p1, yPosition, new StringFormat());
        g.DrawString(dr.Cells["水价"].Value.ToString(), printFont, myBrush, p2, yPosition, new StringFormat());
        DateTime sDate = Convert.ToDateTime(dr.Cells["开启时间"].Value.ToString());
        DateTime eDate = Convert.ToDateTime(dr.Cells["关闭时间"].Value.ToString());
        //TimeSpan span = eDate - sDate;
        //string totalhour = span.Days * 24 + span.Hours.ToString()+span.Minutes;
        //-----xxx201075162325修改----------
        TimeSpan ts1 = new TimeSpan(sDate.Ticks);
        TimeSpan ts2 = new TimeSpan(eDate.Ticks);
        TimeSpan ts = ts1.Subtract(ts2).Duration();
        string totalhour = string.Format("{0:00}", ts.Days * 24 + ts.Hours) + ":" + string.Format("{0:00}", ts.Minutes) + ":" + string.Format("{0:00}", ts.Seconds); ;
        //-------------------------------------
        g.DrawString(totalhour.ToString(), printFont, myBrush, p3, yPosition, new StringFormat());
        //line 6
        yPosition = topMargin + (10.5f * printFont.GetHeight(g));
        g.DrawString(dr.Cells["水价类型"].Value.ToString(), printFont, myBrush, p1, yPosition, new StringFormat());
        g.DrawString(dr.Cells["水费"].Value.ToString(), printFont, myBrush, p2, yPosition, new StringFormat());

        string ticketState = "";//水票状态           
        try
        {
            string tid = dr.Cells[0].Value.ToString().Trim();
            string[] strs = BusinessUserBLL.GetWaterTicketCheckResult(tid);
            if (strs[0] == "True")
            {                  
                if (strs[1] == "True")
                {
                    ticketState = "审核通过!";                     
                }
            }
            else
            {
                ticketState = "确认";                   
            }
        }
        catch
        { }
        g.DrawString(ticketState, printFont, myBrush, p3, yPosition-3.9f*0.3f, new StringFormat());             
        yPosition = topMargin + (12.7f * printFont.GetHeight(g));
        g.DrawString(FrmMain.sessionuser.Uname, printFont, myBrush, p1 + 39 * 4.4f, yPosition, new StringFormat());
        g.DrawString(BusinessUserBLL.CheckPerson(dr.Cells[0].Value.ToString()), printFont, myBrush, leftMargin + xp - 39 * 0.6f, yPosition, new StringFormat());
    }

  • 相关阅读:
    [转]VS 2008 新特性一览
    [转]WCF开发框架形成之旅WCF的几种寄宿方式
    [转]失业的程序员(五):商战之前
    [ 转]Android折叠列表 ExpandableList
    [转]extjs入门——开始
    [转]Jquery操作select
    Ext JS 下载 及 是否收费
    [转]WCF服务的批量寄宿
    [转]Android高手进阶教程(十七)之Android中Intent传递对象的两种方法(Serializable,Parcelable)!
    mat之三PermGen Metaspace永久代内存分析
  • 原文地址:https://www.cnblogs.com/yzb305070/p/1771549.html
Copyright © 2011-2022 走看看