コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
        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);
                    }
                }
            }
        }