Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2011, 09:39
Avatar de Aquaventus
Aquaventus
 
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Definir Unidad Métrica en un PrintDocument

Buenos Dias a todos! Paso a solicitarles un poco de vuestra ayuda con respecto a los PrintDocument, sucede que enlazo a un printPreviewDialog como documento un PrintDocument y al mostrarlo en este PrintPreviewDialog como vista previa antes de Imprimir no me cuadra correctamente a Milimetros(Probablemente en algo estoy fallando o puede que me falta alguna codificacion más). Mi Formulario posee ademas unas cajas de texto en la cual defino el ancho y el alto de la hoja predeterminada y un boton con el cual confirmo :

Código C:
Ver original
  1. private void btnDefinir_Click(object sender, EventArgs e)
  2.         {
  3.             try
  4.             {
  5.                 PaperSize plantilla;
  6.                 plantilla = new PaperSize(lblVale.Text, Convert.ToInt32(txtAncho.Text), Convert.ToInt32(txtAlto.Text));
  7.                 printDocument1.PrinterSettings = impresoraActual;
  8.                 printDocument1.DefaultPageSettings.PaperSize = plantilla;
  9.             }
  10.             catch (Exception ex)
  11.             {
  12.                 MessageBox.Show(ex.Message, ex.Source);
  13.             }
  14.         }

Donde impresoraActual es :
Código C:
Ver original
  1. PrinterSettings impresoraActual = new PrinterSettings();

Luego en el codigo del PrintDocument_PrintPage donde se dibuja la estructura a mostrar :
Código C:
Ver original
  1. private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
  2.         {
  3.             try
  4.             {
  5.                 Font fuente = new Font("Verdana", 8);
  6.  
  7.                 //La unidad de medida a usar sera milimetros
  8.                 e.Graphics.PageUnit = GraphicsUnit.Millimeter;
  9.  
  10.                 //1ra linea
  11.                 e.Graphics.DrawString(cliente_p[contador].ToString(), fuente, Brushes.Black, 30, 42);
  12.                 e.Graphics.DrawString(fecha_d[contador].ToString(), fuente, Brushes.Black, 107, 42);
  13.                 e.Graphics.DrawString(vale_d[contador].ToString(), fuente, Brushes.Black, 180, 42);
  14.  
  15.                 //2da linea
  16.                 e.Graphics.DrawString(vale_p[contador].ToString(), fuente, Brushes.Black, 30, 46);
  17.                 e.Graphics.DrawString(cliente_d[contador].ToString(), fuente, Brushes.Black, 107, 46);
  18.                 e.Graphics.DrawString(factura_d[contador].ToString(), fuente, Brushes.Black, 180, 46);
  19.  
  20.                 //3ra linea
  21.                 e.Graphics.DrawString(fecha_p[contador].ToString(), fuente, Brushes.Black, 30, 50);
  22.                 e.Graphics.DrawString(kilometraje_d[contador].ToString(), fuente, Brushes.Black, 107, 50);
  23.                 e.Graphics.DrawString(combustible_d[contador].ToString(), fuente, Brushes.Black, 180, 50);
  24.  
  25.                 //4ta linea
  26.                 e.Graphics.DrawString(entrega_p[contador].ToString(), fuente, Brushes.Black, 30, 54);
  27.                 e.Graphics.DrawString(placa_d[contador].ToString(), fuente, Brushes.Black, 107, 54);
  28.                 e.Graphics.DrawString(importe_d[contador].ToString(), fuente, Brushes.Black, 180, 54);
  29.  
  30.                 //5ta linea
  31.                 e.Graphics.DrawString(galones_p[contador].ToString(), fuente, Brushes.Black, 30, 58);
  32.                 e.Graphics.DrawString(chofer_d[contador].ToString(), fuente, Brushes.Black, 107, 58);
  33.                 e.Graphics.DrawString(galones_d[contador].ToString(), fuente, Brushes.Black, 180, 58);
  34.  
  35.                 //6ta linea
  36.                 e.Graphics.DrawString(importe_p[contador].ToString(), fuente, Brushes.Black, 30, 62);
  37.  
  38.  
  39.                 if (contador < paginas - 1)
  40.                 {
  41.                     contador = contador + 1;
  42.                     e.HasMorePages = true;
  43.                    
  44.                 }
  45.                 else
  46.                 {
  47.                     e.HasMorePages = false;
  48.                 }
  49.             }
  50.             catch (Exception ex)
  51.             {
  52.                 MessageBox.Show(ex.Message, ex.Source);
  53.             }
  54.         }

Verán que indico la unidad a medida a usar la defino a milimetros, pero al momento de mostrar no figura la imagen porque no muestra nada porque si yo defino el alto y el ancho de la hoja en milimetros en las cajas de texto 225 y 102 no muestra, pero si defino una cantidad mas alta como 900 x 370 cuadra en la imagen pero al imprimir no cuadra con lo impreso en las coordenadas en milimetros que definí. Espero vuestra ayuda. Saludos!.

PDT: No importa si las respuestas que me puedan brindar son en VB.NET igual sé su definicion en c#
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net