private void DrawRow(Graphics g, DataRow dr, int top) { int l = gridLeft; int t = top; for (int i = 0; i < tbstyle.Rows.Count; i++) { var row = tbstyle.Rows[i]; if (row["display"].ToString() == "1") { string colname = row["colname"].ToString(); string colbyname = row["colbyname"].ToString(); int colwidth = Convert.ToInt16(row["width"].ToString()); int align = Convert.ToInt16(row["align"].ToString()); var sf = Helper.Conv.AlignToStringFormat(align); string format = row["format"].ToString(); Rectangle rec = new Rectangle(l, t, colwidth, rowHeight); string context = ""; if (tbdetail.Columns.Contains(colname) == true) { var col = tbdetail.Columns[colname]; if (format == "") { context = dr[colname].ToString(); } else if (format == "大写金额") { context = Helper.Conv.DaXie2(dr[colname].ToString()); } else if (format == "条形码") { Helper.Barcode.CreateBarcodeImage(g, rec.X, rec.Y, "C", dr[colname].ToString(), 1F, rec.Height); } else if (format == "二维码") { Helper.QRCode code = new Helper.QRCode(); Bitmap bit = code.grant_qrcode(dr[colname].ToString(), rec.Width, rec.Width); g.DrawImage(bit, rec); } else { if (col.DataType == typeof(decimal)) { context = Helper.Conv.ToDecimal(dr[colname]).ToString(format); } else if (col.DataType == typeof(Int16)) { context = Helper.Conv.ToInt16(dr[colname]).ToString(format); } else if (col.DataType == typeof(Int32)) { context = Helper.Conv.ToInt32(dr[colname]).ToString(format); } else if (col.DataType == typeof(DateTime)) { context = Helper.Conv.ToDateTime(dr[colname]).ToString(format); } else { context = dr[colname].ToString(); } } } if (format == "条形码") { } else if (format == "二维码") { } else { g.DrawString(context, gridFont, Brushes.Black, rec, sf); } g.DrawRectangle(Pens.Black, rec); l += colwidth; } } }
private void Draw(System.Drawing.Graphics g, int area, int pageIndex, int cur_top) { Helper.ReadXml r = new Helper.ReadXml(xml); int offset_y = 0; if (area == 1) { offset_y -= barHeight; } else if (area == 2) { offset_y -= ah + 2 * barHeight; } else if (area == 3) { offset_y -= ah + bh + barHeight * 3; } else if (area == 4) { offset_y -= ah + bh + ch + barHeight * 4; } else if (area == 5) { offset_y -= ah + bh + ch + dh + barHeight * 5; } if (area == 5) { cur_top = pageHeight - eh; } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject1")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); string context = r2.Read("Context"); int Align = Convert.ToInt16(r2.Read("Align")); var sf = Helper.Conv.AlignToStringFormat(Align); FontConverter fc = new FontConverter(); var font = (Font)fc.ConvertFromString(r2.Read("Font")); var color = Color.FromArgb(Convert.ToInt32(r2.Read("Color"))); int Area = Convert.ToInt16(r2.Read("Area")); int _BorderLeft = Convert.ToInt16(r2.Read("BorderLeft")); int _BorderRight = Convert.ToInt16(r2.Read("BorderRight")); int _BorderTop = Convert.ToInt16(r2.Read("BorderTop")); int _BorderBottom = Convert.ToInt16(r2.Read("BorderBottom")); Rectangle rec = new Rectangle(left, top, Width, Height); if (Area == area) { g.DrawString(context, font, new SolidBrush(color), rec, sf); if (_BorderLeft == 1) { g.DrawLine(Pens.Black, left, top, left, top + Height); } if (_BorderRight == 1) { g.DrawLine(Pens.Black, left + Width, top, left + Width, top + Height); } if (_BorderTop == 1) { g.DrawLine(Pens.Black, left, top, left + Width, top); } if (_BorderBottom == 1) { g.DrawLine(Pens.Black, left, top + Height, left + Width, top + Height); } } } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject2")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); string Field = r2.Read("Field"); string Format = r2.Read("Format"); int Align = Convert.ToInt16(r2.Read("Align")); var sf = Helper.Conv.AlignToStringFormat(Align); FontConverter fc = new FontConverter(); var font = (Font)fc.ConvertFromString(r2.Read("Font")); var color = Color.FromArgb(Convert.ToInt32(r2.Read("Color"))); int Area = Convert.ToInt16(r2.Read("Area")); int _BorderLeft = Convert.ToInt16(r2.Read("BorderLeft")); int _BorderRight = Convert.ToInt16(r2.Read("BorderRight")); int _BorderTop = Convert.ToInt16(r2.Read("BorderTop")); int _BorderBottom = Convert.ToInt16(r2.Read("BorderBottom")); Rectangle rec = new Rectangle(left, top, Width, Height); if (Area == area) { if (tbmain.Rows.Count != 0) { if (tbmain.Columns.Contains(Field) == true) { DataRow row = tbmain.Rows[0]; DataColumn col = tbmain.Columns[Field]; if (tbmain.Columns[Field].DataType == typeof(byte[])) { System.IO.MemoryStream ms = new System.IO.MemoryStream((byte[])row[Field]); Image img = Image.FromStream(ms); g.DrawImage(img, rec); continue; } string context = ""; if (Format == "") { context = row[Field].ToString(); } else if (Format == "大写金额") { context = Helper.Conv.DaXie2(row[Field].ToString()); } else if (Format == "条形码") { Helper.Barcode.CreateBarcodeImage(g, rec.X, rec.Y, "C", row[Field].ToString(), 1F, rec.Height); } else if (Format == "二维码") { Helper.QRCode code = new Helper.QRCode(); Bitmap bit = code.grant_qrcode(row[Field].ToString(), rec.Width, rec.Width); g.DrawImage(bit, rec); } else { if (col.DataType == typeof(decimal)) { context = Helper.Conv.ToDecimal(row[Field]).ToString(Format); } else if (col.DataType == typeof(Int16)) { context = Helper.Conv.ToInt16(row[Field]).ToString(Format); } else if (col.DataType == typeof(Int32)) { context = Helper.Conv.ToInt32(row[Field]).ToString(Format); } else if (col.DataType == typeof(DateTime)) { context = Helper.Conv.ToDateTime(row[Field]).ToString(Format); } else { context = row[Field].ToString(); } } if (Format == "条形码") { } else if (Format == "二维码") { } else { g.DrawString(context, font, new SolidBrush(color), rec, sf); } if (_BorderLeft == 1) { g.DrawLine(Pens.Black, left, top, left, top + Height); } if (_BorderRight == 1) { g.DrawLine(Pens.Black, left + Width, top, left + Width, top + Height); } if (_BorderTop == 1) { g.DrawLine(Pens.Black, left, top, left + Width, top); } if (_BorderBottom == 1) { g.DrawLine(Pens.Black, left, top + Height, left + Width, top + Height); } } } } } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject3")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); string Field = r2.Read("Field"); string Format = r2.Read("Format"); int Align = Convert.ToInt16(r2.Read("Align")); var sf = Helper.Conv.AlignToStringFormat(Align); FontConverter fc = new FontConverter(); var font = (Font)fc.ConvertFromString(r2.Read("Font")); var color = Color.FromArgb(Convert.ToInt32(r2.Read("Color"))); int Area = Convert.ToInt16(r2.Read("Area")); int _BorderLeft = Convert.ToInt16(r2.Read("BorderLeft")); int _BorderRight = Convert.ToInt16(r2.Read("BorderRight")); int _BorderTop = Convert.ToInt16(r2.Read("BorderTop")); int _BorderBottom = Convert.ToInt16(r2.Read("BorderBottom")); Rectangle rec = new Rectangle(left, top, Width, Height); if (Area == area) { if (tbdetail.Rows.Count != 0) { if (tbdetail.Columns.Contains(Field) == true) { var col = tbdetail.Columns[Field]; string context = ""; decimal val = 0; foreach (DataRow row in tbdetail.Rows) { val += Helper.Conv.ToDecimal(row[Field].ToString()); } if (Format == "") { context = val.ToString(); } else if (Format == "大写金额") { context = Helper.Conv.DaXie2(val.ToString("0.00")); } else { if (col.DataType == typeof(decimal)) { context = val.ToString(Format); } else if (col.DataType == typeof(Int16)) { context = Helper.Conv.ToInt16(val).ToString(Format); } else if (col.DataType == typeof(Int32)) { context = Helper.Conv.ToInt32(val).ToString(Format); } else if (col.DataType == typeof(DateTime)) { context = Helper.Conv.ToDateTime(val).ToString(Format); } else { context = val.ToString(); } } g.DrawString(context, font, new SolidBrush(color), rec, sf); if (_BorderLeft == 1) { g.DrawLine(Pens.Black, left, top, left, top + Height); } if (_BorderRight == 1) { g.DrawLine(Pens.Black, left + Width, top, left + Width, top + Height); } if (_BorderTop == 1) { g.DrawLine(Pens.Black, left, top, left + Width, top); } if (_BorderBottom == 1) { g.DrawLine(Pens.Black, left, top + Height, left + Width, top + Height); } } } } } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject4")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); var color = Color.FromArgb(Convert.ToInt32(r2.Read("Color"))); int Area = Convert.ToInt16(r2.Read("Area")); if (Area == area) { g.DrawLine(new Pen(color), left + Width / 2, top, left + Width / 2, top + Height); } } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject5")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); var color = Color.FromArgb(Convert.ToInt32(r2.Read("Color"))); int Area = Convert.ToInt16(r2.Read("Area")); if (Area == area) { g.DrawLine(new Pen(color), left, top + Height / 2, left + Width, top + Height / 2); } } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject6")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); var img = Helper.Conv.StringToImage(r2.Read("Image")); int Area = Convert.ToInt16(r2.Read("Area")); Rectangle rec = new Rectangle(left, top, Width, Height); if (Area == area) { g.DrawImage(img, rec); } } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject7")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); int Align = Convert.ToInt16(r2.Read("Align")); var sf = Helper.Conv.AlignToStringFormat(Align); FontConverter fc = new FontConverter(); var font = (Font)fc.ConvertFromString(r2.Read("Font")); var color = Color.FromArgb(Convert.ToInt32(r2.Read("Color"))); int Area = Convert.ToInt16(r2.Read("Area")); int _BorderLeft = Convert.ToInt16(r2.Read("BorderLeft")); int _BorderRight = Convert.ToInt16(r2.Read("BorderRight")); int _BorderTop = Convert.ToInt16(r2.Read("BorderTop")); int _BorderBottom = Convert.ToInt16(r2.Read("BorderBottom")); Rectangle rec = new Rectangle(left, top, Width, Height); if (Area == area) { string context = "第N页,共M页".Replace("N", pageIndex.ToString()) .Replace("M", PageCount.ToString()); g.DrawString(context, font, new SolidBrush(color), rec, sf); if (_BorderLeft == 1) { g.DrawLine(Pens.Black, left, top, left, top + Height); } if (_BorderRight == 1) { g.DrawLine(Pens.Black, left + Width, top, left + Width, top + Height); } if (_BorderTop == 1) { g.DrawLine(Pens.Black, left, top, left + Width, top); } if (_BorderBottom == 1) { g.DrawLine(Pens.Black, left, top + Height, left + Width, top + Height); } } } foreach (Helper.ReadXml r2 in r.ReadList("PrintObject8")) { int left = Convert.ToInt16(r2.Read("Left")); int top = Convert.ToInt16(r2.Read("Top")); top += offset_y + cur_top; int Width = Convert.ToInt16(r2.Read("Width")); int Height = Convert.ToInt16(r2.Read("Height")); string format = r2.Read("Format"); int Align = Convert.ToInt16(r2.Read("Align")); var sf = Helper.Conv.AlignToStringFormat(Align); FontConverter fc = new FontConverter(); var font = (Font)fc.ConvertFromString(r2.Read("Font")); var color = Color.FromArgb(Convert.ToInt32(r2.Read("Color"))); int Area = Convert.ToInt16(r2.Read("Area")); int _BorderLeft = Convert.ToInt16(r2.Read("BorderLeft")); int _BorderRight = Convert.ToInt16(r2.Read("BorderRight")); int _BorderTop = Convert.ToInt16(r2.Read("BorderTop")); int _BorderBottom = Convert.ToInt16(r2.Read("BorderBottom")); Rectangle rec = new Rectangle(left, top, Width, Height); if (Area == area) { string context = ""; if (format == "") { context = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } else { context = System.DateTime.Now.ToString(format); } g.DrawString(context, font, new SolidBrush(color), rec, sf); if (_BorderLeft == 1) { g.DrawLine(Pens.Black, left, top, left, top + Height); } if (_BorderRight == 1) { g.DrawLine(Pens.Black, left + Width, top, left + Width, top + Height); } if (_BorderTop == 1) { g.DrawLine(Pens.Black, left, top, left + Width, top); } if (_BorderBottom == 1) { g.DrawLine(Pens.Black, left, top + Height, left + Width, top + Height); } } } }