none
System.Drawing igualar lineas RRS feed

  • Pregunta

  • buenos dias 

    foreros estoy realizando una aplicación windows form c# estoy en el tema de impresión al generar un ticket necesito ordenar el precio cantidad total que estén ordenados al lado de la descripción 

    este es mi código que hace el salto de linea cuando el nombre del producto > 18 hace el salto de linea

    al hacer el salto de linea del nombre del producto. queda  desordenado precio cantidad y total entoces necesito quede alineados 

     List<string> BreakIntoLines(string text)
            {
                List<string> lines = new List<string>();
    
                string[] tokens = text.Split(" ".ToCharArray());
                string line = "";
                foreach (string tok in tokens)
                {
                    if (line.Length + tok.Length > 18)
                    {
                        lines.Add(line);
                        line = "";
                    }
                    line += tok + " ";
                }
                if (line.Length > 0)
                    lines.Add(line);
    
                return lines;
            }

    este codigo del nombre producto = descripcion

    este codigo hace el salto de la linea 

     List<string> lines = BreakIntoLines(reporte[i].NombreProducto);
                        for (int i = 0; i < lines.Count; i++)
                        {
                            e.Graphics.DrawString(lines[i], Fuente, Brushes.Black, 1, intFila);
                            intFila += 15;
                        }

    como podría dejar los demás campos alienados  en la misma linea donde empieza la descripción de los productos ?

      private void Repo_PrintPage(object sender, PrintPageEventArgs e)
            {
                var intFila = 120;
                float LineasPorPagina = 60;
                float CantidadPaginas = 0;
    
                int Contador = 0;
                string TituloReporte = "BOLETA N° " + reporte[0].NumDocumento.ToString();
                var Fuente = new Font("Arial", 8, FontStyle.Regular);
                Rectangle rectangulo = new Rectangle(1, 20, 300, 20);
                StringFormat stringFormat = new StringFormat();
                stringFormat.Alignment = StringAlignment.Center;
                stringFormat.LineAlignment = StringAlignment.Center;
                Font FuenteTitulo = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point);
                StringFormat FormatoTotales = new StringFormat();
                FormatoTotales.Alignment = StringAlignment.Far;
                CantidadPaginas = reporte.Count / LineasPorPagina;
                var IntPagina = (int)CantidadPaginas;
                var saldo = CantidadPaginas - IntPagina;
    
                if (saldo > 0)
                {
                    CantidadPaginas = IntPagina + 1;
                }
                try
                {
                    //Pen myPen = new Pen(Color.Black, 1);
                    //e.Graphics.DrawRectangle(myPen, 1, 80, 500, 25);
                    e.Graphics.DrawString(TituloReporte, FuenteTitulo, Brushes.Black, rectangulo, stringFormat);
                    e.Graphics.DrawString("FECHA", Fuente, Brushes.Black, 1, 50);
                    e.Graphics.DrawString(": " + DateTime.Now.ToShortDateString(), Fuente, Brushes.Black, 50, 50);
                    e.Graphics.DrawString("HORA  : " + DateTime.Now.ToShortTimeString(), Fuente, Brushes.Black, 200, 50);
                    e.Graphics.DrawString("CLIENTE", Fuente, Brushes.Black, 1, 65);
                    e.Graphics.DrawString(": " + reporte[0].NombreCliente, Fuente, Brushes.Black, 50, 65);
                    e.Graphics.DrawString("Venta", Fuente, Brushes.Black, 1, 80);
                    e.Graphics.DrawString(": " + reporte[0].IdVenta.ToString(), Fuente, Brushes.Black, 50, 80);
                    e.Graphics.DrawString("----------------------------------------------------------------------------------", Fuente, Brushes.Black, 1, 90);
                    e.Graphics.DrawString("DESCRIPCION", Fuente, Brushes.Black, 1, 100);
                    e.Graphics.DrawString("PRECIO", Fuente, Brushes.Black, 130, 100);
                    e.Graphics.DrawString("CANT.", Fuente, Brushes.Black, 180, 100);
                    e.Graphics.DrawString("IMPORTE", Fuente, Brushes.Black, 230, 100);
                    e.Graphics.DrawString("----------------------------------------------------------------------------------", Fuente, Brushes.Black, 1, 108);
                    while (Contador < LineasPorPagina && i < reporte.Count)
                    {
                        List<string> lines = BreakIntoLines(reporte[i].NombreProducto);
                        for (int i = 0; i < lines.Count; i++)
                        {
                            e.Graphics.DrawString(lines[i], Fuente, Brushes.Black, 1, intFila);
                            intFila += 15;
                        }
    
    
                        e.Graphics.DrawString(reporte[i].Precio.ToString("0,0.00"), Fuente, Brushes.Black, 130, intFila);
                        e.Graphics.DrawString(reporte[i].Cantidad.ToString("00"), Fuente, Brushes.Black, 190, intFila);
                        e.Graphics.DrawString((reporte[i].Precio * reporte[i].Cantidad).ToString("0,0.00"), Fuente, Brushes.Black, 280, intFila, FormatoTotales);
                        intFila += 15;
                        Contador++;
                        i++;
    
                    }


    • Editado djnilo viernes, 9 de noviembre de 2018 15:10
    viernes, 9 de noviembre de 2018 15:10

Todas las respuestas

  • Deleted
    viernes, 9 de noviembre de 2018 16:53
  • gracias por responder walter lo hice de esa forma pero sale igual

    no funciona queda peor en que parte exactamente

     while (Contador < LineasPorPagina && i < reporte.Count)
                    {
                        List<string> lines = BreakIntoLines(reporte[i].NombreProducto);
                        for (int i = 0; i < lines.Count; i++)
                        {
                            e.Graphics.DrawString(lines[i], Fuente, Brushes.Black, 1, intFila);
                            intFila -= 15;
                        }
                       
    
                        e.Graphics.DrawString(reporte[i].Precio.ToString("0,0.00"), Fuente, Brushes.Black, 130, intFila);
                        e.Graphics.DrawString(reporte[i].Cantidad.ToString("00"), Fuente, Brushes.Black, 190, intFila);
                        e.Graphics.DrawString((reporte[i].Precio * reporte[i].Cantidad).ToString("0,0.00"), Fuente, Brushes.Black, 280, intFila, FormatoTotales);
                        intFila += 15;
                        Contador++;
                        i++;
    
                    }

    viernes, 9 de noviembre de 2018 17:53
  • Deleted
    viernes, 9 de noviembre de 2018 18:02
  • queda igual walter no queda ordenado

    donde empieza la descripción 

    ejemplo correcto

    LECHE PROINA             450.0       01  450

    CACAO SOPRO 200ML

    viernes, 9 de noviembre de 2018 18:17
  • Deleted
    viernes, 9 de noviembre de 2018 18:28
  • casi walter pero igual queda corrido 

     while (Contador < LineasPorPagina && i < reporte.Count)
                    {
                        List<string> lines = BreakIntoLines(reporte[i].NombreProducto);
                        for (int i = 0; i < lines.Count; i++)
                        {
                            e.Graphics.DrawString(lines[i], Fuente, Brushes.Black, 1, intFila);
                            intFila += 15;
                        }
                        
    
                        e.Graphics.DrawString(reporte[i].Precio.ToString("0,0.00"), Fuente, Brushes.Black, 130, intFila);
                        e.Graphics.DrawString(reporte[i].Cantidad.ToString("00"), Fuente, Brushes.Black, 190, intFila);
                        e.Graphics.DrawString((reporte[i].Precio * reporte[i].Cantidad).ToString("0,0.00"), Fuente, Brushes.Black, 280, intFila, FormatoTotales);
                       
                        Contador++;
                        i++;
    
                    }
                    e.Graphics.DrawString("----------------------------------------------------------------------------------", Fuente, Brushes.Black, 1, intFila);
                    Contador++;
                    intFila += 15;
                    i++;
                    e.Graphics.DrawString("Total", Fuente, Brushes.Black, 150, intFila, FormatoTotales);
                    e.Graphics.DrawString(reporte[0].Total.ToString("0,0.00"), Fuente, Brushes.Black, 280, intFila, FormatoTotales);
                    intFila += 15;
                    Contador++;
                    i++;
                    e.Graphics.DrawString("Entregado", Fuente, Brushes.Black, 150, intFila, FormatoTotales);
                    e.Graphics.DrawString(reporte[0].Entregado.ToString("0,0.00"), Fuente, Brushes.Black, 280, intFila, FormatoTotales);
                    intFila += 15;
                    Contador++;
                    i++;
                    e.Graphics.DrawString("Vuelto", Fuente, Brushes.Black, 150, intFila, FormatoTotales);
                    e.Graphics.DrawString(reporte[0].Vuelto.ToString("0,0.00"), Fuente, Brushes.Black, 280, intFila, FormatoTotales);
                    intFila += 15;
                    Contador++;
                    i++;
                    intFila += 15;
                    Contador++;
                    i++;
                    e.Graphics.DrawString("----------------------------------------------------------------------------------", Fuente, Brushes.Black, 1, intFila);
                    Contador++;
                    intFila += 15;
                    i++;
                    e.Graphics.DrawString("Medio de Pago : ", Fuente, Brushes.Black, 1, intFila);
                    e.Graphics.DrawString(reporte[0].NombreMediodePago.ToString(), Fuente, Brushes.Black, 170, intFila, FormatoTotales);
                    intFila += 15;
                    Contador++;
                    i++;
                    intFila += 15;
                    Contador++;
                    i++;

    viernes, 9 de noviembre de 2018 18:47