Tengo un formulario que tiene 2 paneles. Estoy tratando de guardar el contenido de Panel2 como una imagen. Vi un hilo que hablaba sobre el uso de la captura de pantalla para hacer esto, pero no puedo encontrar el hilo ya. Lea también sobre el uso de la DrawToBitMap método, pero desde visual studio 2005 info, no estoy seguro si es la más actual o solución adecuada para esto. Entonces, ¿qué recomienda usted para salvar mi Panel2 como una imagen, de preferencia jpg?

ACTUALIZACIÓN:
He implementado el código que se recomiendan a continuación para el DrawToBitMap, pero se ahorra la mitad de mi panel2 (la mitad izquierda si que marca la diferencia).
Porque guarda la mitad de mi panel2, que multiplica el ancho de la llamada ‘2’ para que se guarde el formulario completo. Una especie de cosa rara y no tiene sentido para mí, ya que el ancho de panel 2 debe ser el panel completo y no la mitad?

//multiplies the width of panel2 call by 2 to make it save the full panel
Bitmap bmp = new Bitmap(splitContainer1.Panel2.Width * 2, splitContainer1.Panel2.Height);
splitContainer1.Panel2.DrawToBitmap(bmp, splitContainer1.Panel2.Bounds);
bmp.Save(@"C:\Test.bmp");
InformationsquelleAutor Fuzz Evans | 2012-01-05

1 Comentario

  1. 7

    Control.DrawToBitMap todavía se admite en .Net 4. Con las siguientes advertencias.

    De enlace de arriba:

    • La DrawToBitmap método no es compatible con los controles ActiveX. Usted
      puede reemplazar el evento OnPrint y proporcionar la costumbre de impresión lógica si
      necesario.

    La DrawToBitmap método tiene las siguientes limitaciones:

    • ArgumentException podría ser lanzado para grandes mapas de bits. El máximo
      tamaño permisible varía según el equipo.
    • DrawToBitmap no admite los controles de Tinta para el Windows XP
      Tablet PC Edition 2005 sistema operativo.
    • DrawToBitmap no dibuja un niño de cuadro de texto si la propiedad Visible de
      en el cuadro de texto se establece en false.
    • Controles dentro de los contenedores que se representan en orden inverso.
    • DrawToBitmap no es totalmente funcional para el control RichTextBox; sólo el
      la frontera de un mapa de bits es dibujado.

    Editar Agregado el ejemplo y la imagen:

    Bitmap bmp = new Bitmap(panel1.Width,panel1.Height);
    panel1.DrawToBitmap(bmp, panel1.Bounds);
    bmp.Save(@"C:\Temp\Test.bmp");

    ¿Cómo puedo guardar un Panel en la forma como una imagen?

    • Si DrawToBitMap tiene muchas limitaciones, hay algo en caso contrario se recomienda en su lugar?
    • He implementado el código y se imprime la mitad de mi panel2… no sé por qué lo hice sólo la mitad?
    • He tenido que multiplicar el panel2.de ancho por 2 para hacer que se guarde el panel completo, sin multiplicar por 2 sólo me dio la mitad… que parece raro.
    • Sí que parece raro, yo acabo de utilizar el ancho del panel y me dieron el panel completo. Tan lejos como las limitaciones de DrawToBitmap, que parecen ser más casos de borde que cualquier otra cosa. Usted puede probar el enlace que AVD di en los comentarios si usted está teniendo problemas.

Dejar respuesta

Please enter your comment!
Please enter your name here