Ejemplo n.º 1
0
        /// <summary>
        /// 打印图片和数据
        /// </summary>
        /// <param name="p_objPrintPageArgs"></param>
        private void m_mthPrintChart(System.Drawing.Printing.PrintPageEventArgs p_objPrintPageArgs)
        {
            Graphics  g           = p_objPrintPageArgs.Graphics;
            int       chartHeight = 300;
            Rectangle rect        = new Rectangle((int)(m_fltPrintWidth * 0.10f), (int)m_lngY + 10, (int)(m_fltPrintWidth * 0.8), chartHeight);

            m_zedGraph.DrawNoFontChart(g, rect);
            m_lngY += (long)chartHeight + 8;

            #region 本室浓度
            //本室浓度
            float fltStartX   = m_fltPrintWidth * 0.125f;
            float fltCurrentX = fltStartX;
            SizeF sfWords     = g.MeasureString("本室均值: ", m_fntMidleBold);
            g.DrawString("本室均值: ", m_fntMidleBold, Brushes.Black, fltCurrentX, m_lngY);

            // SD
            fltCurrentX = m_fltPrintWidth * 0.4f;
            g.DrawString("SD: ", m_fntMidleBold, Brushes.Black, fltCurrentX, m_lngY);

            // CV
            fltCurrentX = m_fltPrintWidth * 0.6f;
            g.DrawString("CV: ", m_fntMidleBold, Brushes.Black, fltCurrentX, m_lngY);
            if (m_lstQCDatas != null && m_lstQCDatas.Count > 0)
            {
                double[] dblDataArr = new double[m_lstQCDatas.Count];
                for (int index = 0; index < m_lstQCDatas.Count; index++)
                {
                    dblDataArr[index] = m_lstQCDatas[index].m_dlbResult;
                }

                double dblX   = 0;
                double dblSD  = 0;
                double dblCV  = 0;
                long   lngRes = clsLISPublic.m_lngCalculateSDXCV(dblDataArr, out dblX, out dblSD, out dblCV);

                if (lngRes > 0)
                {
                    float fltInY = g.MeasureString("本室均值", m_fntMidleBold).Height - g.MeasureString("本室均值", m_fntSmallNotBold).Height;

                    fltCurrentX  = fltStartX;
                    sfWords      = g.MeasureString("本室均值: ", m_fntMidleBold);
                    fltCurrentX += sfWords.Width;
                    g.DrawString(dblX.ToString("0.00"), m_fntSmallNotBold, Brushes.Black, fltCurrentX, m_lngY + fltInY);

                    // SD
                    fltCurrentX  = m_fltPrintWidth * 0.4f;
                    sfWords      = g.MeasureString("SD: ", m_fntMidleBold);
                    fltCurrentX += sfWords.Width;
                    g.DrawString(dblSD.ToString("0.00"), m_fntSmallNotBold, Brushes.Black, fltCurrentX, m_lngY + fltInY);

                    // CV
                    fltCurrentX  = m_fltPrintWidth * 0.6f;
                    sfWords      = g.MeasureString("CV: ", m_fntMidleBold);
                    fltCurrentX += sfWords.Width;
                    g.DrawString(dblCV.ToString("0.0"), m_fntSmallNotBold, Brushes.Black, fltCurrentX, m_lngY + fltInY);
                }
            }

            m_lngY += Convert.ToInt64(sfWords.Height) + 3;
            #endregion

            #region 本室浓度数据

            fltCurrentX = fltStartX;
            SizeF sizef    = g.MeasureString("12.50", m_fntSmallNotBold);
            float width    = sizef.Width;
            float height   = sizef.Height + 2;
            int   widSpace = 2;
            int   heiSpace = 2;

            float        xStep       = width + widSpace;
            float        yStep       = height + heiSpace;
            float        fltCurrentY = m_lngY;
            StringFormat sf          = new StringFormat();
            sf.Alignment     = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;

            clsLisQCDataVO objTemp      = null;
            int            iOneRowCount = 16;
            int            iRowCount    = m_lstQCDatas.Count / iOneRowCount;
            if (m_lstQCDatas.Count % iOneRowCount > 0)
            {
                iRowCount += 1;
            }
            int        idxResult        = 0;
            int        fltCurPrintWidth = Convert.ToInt32(fltCurrentX + xStep * iOneRowCount);
            RectangleF recgF            = new RectangleF(fltCurrentX, fltCurrentY, xStep, yStep);
            // 每行打印16个数据
            if (iRowCount > 0)
            {
                g.DrawLine(m_GridPen, fltCurrentX, fltCurrentY, fltCurPrintWidth, fltCurrentY);

                for (int iRow = 0; iRow < iRowCount; iRow++)
                {
                    fltCurrentX = fltStartX;
                    g.DrawLine(m_GridPen, fltCurrentX, fltCurrentY + yStep, fltCurPrintWidth, fltCurrentY + yStep);
                    g.DrawLine(m_GridPen, fltCurrentX, fltCurrentY + 2 * yStep, fltCurPrintWidth, fltCurrentY + 2 * yStep);

                    g.DrawLine(m_GridPen, fltCurrentX, fltCurrentY, fltCurrentX, fltCurrentY + 2 * yStep);
                    for (int index = 0; index < iOneRowCount; index++)
                    {
                        g.DrawLine(m_GridPen, fltCurrentX + xStep, fltCurrentY, fltCurrentX + xStep, fltCurrentY + 2 * yStep);

                        if (idxResult < m_lstQCDatas.Count)
                        {
                            objTemp = m_lstQCDatas[idxResult];
                            recgF   = new RectangleF(fltCurrentX, fltCurrentY, xStep, yStep);
                            g.DrawString(objTemp.m_datQCDate.ToString("M.d"), m_fntSmallNotBold, Brushes.Black, recgF, sf);
                            recgF.Y = fltCurrentY + yStep;
                            g.DrawString(objTemp.m_dlbResult.ToString(), m_fntSmallNotBold, Brushes.Black, recgF, sf);

                            idxResult += 1;
                        }

                        fltCurrentX += xStep;
                    }

                    fltCurrentY += 2 * yStep;
                }
            }
            #endregion
            m_lngY += Convert.ToInt64(yStep * 2 * iRowCount) + 10;
        }