none
Vista Previa e Imprimir Panel con todos sus objetos Windows F RRS feed

  • Pregunta

  • Hola a todos , espero que puedan ayudar con el siguiente tema.

    Tengo que imprimir el contenido de un panel y que se pueda visualizar la vista previa.

    El problema es con el código que tengo ahora, realiza la acción, pero no esta ajustando el tamaño del panel al tamaño de la hoja, entonces lo que hace es recortar un pedazo del panel en vez de ajustarlo o minimizarlo para que quepa dentro de la hoja.

    El codigo 

           //Variables 
    PrintDocument Imprimir = new PrintDocument();
            PrintPreviewDialog VistaPrevia = new PrintPreviewDialog();
            UltraPanel pannel = null;
            Bitmap MemoriaImpresion;
            public UltraPanel PanelIm;
    
    
    
    
    
            public void GetPrintArea(UltraPanel pnl)
            {
                MemoriaImpresion = new Bitmap(pnl.Width, pnl.Height);
                Rectangle rect = new Rectangle(0, 0, pnl.Width, pnl.Height);
                pnl.DrawToBitmap(MemoriaImpresion,rect);
            }
    
            protected override void OnPaint(PaintEventArgs e)
            {
                if (MemoriaImpresion == null)
                    return;
                e.Graphics.DrawImage(MemoriaImpresion, 0, 0);
                base.OnPaint(e);
            }
    
            void Imprimir_PrintPage(object sender, PrintPageEventArgs e)
            {
                Rectangle pagearea = e.PageBounds;
                //e.Graphics.DrawImage(MemoriaImpresion, (pagearea.Width / 2) - (pannel.Width / 2) ,pannel.Location.Y);
              
            }
    
            public void Print(UltraPanel pnl)
            {
                pannel = pnl;
                GetPrintArea(pnl);
                //VistaPrevia.Size = new Size();
                VistaPrevia.Document = Imprimir;
                VistaPrevia.ShowDialog();
            }
    
            private void btnImprimir_Click(object sender, EventArgs e)
            {
                Imprimir.PrintPage += new PrintPageEventHandler(Imprimir_PrintPage);
                PrintPage();
                Print(PanelIm);
            }

    EL metodo 

    PrintPage(); //Obtiene el tamaño del panel que sea, ya que el panel esta en otro form y se lo asigna a la variable PanelIm

    Agradezco quien me pudiese ayudar, ya que la verdad no se como ajustarlo sin que me haga ese corte del panel, gracias.

    lunes, 10 de abril de 2017 16:08

Respuestas