/// <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; }