none
Como almacenar una captura de un form sin guardar y adjuntarla a un correo o al body del correo RRS feed

  • Pregunta

  • Creo una captura de un form actual, pero se guarda en una ubicacion y yo lo que quiero es almacenarla temporalmente e incrustar esa captura al cuerpo del correo?

    Hay alguna manera?

    miércoles, 29 de julio de 2020 22:57

Todas las respuestas

  • Hola BlackCode23,

    No sé si entendí correctamente a lo que te refieres por captura, pero creo que podrías lograr esto con PictureBox. En esta guía hay una sección que se llama Capturar el contenido del formulario actual, puedes consultarlo para más información, pero básicamente es esto:

    ' Capturar todo el área del formulario
    
    Dim gr As Graphics = Me.CreateGraphics
    ' Tamaño de lo que queremos copiar
    Dim fSize As Size = Me.Size
    ' Creamos el bitmap con el área que vamos a capturar
    ' En este caso, con el tamaño del formulario actual
    Dim bm As New Bitmap(fSize.Width, fSize.Height, gr)
    ' Un objeto Graphics a partir del bitmap
    Dim gr2 As Graphics = Graphics.FromImage(bm)
    ' Copiar el área de la pantalla que ocupa el formulario
    gr2.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, fSize)
    
    ' Asignamos la imagen al PictureBox
    Me.picCaptura.Image = bm

    La guía dice que es compatible con c#, pero si te diera problema puedes poner el código de la guía en este convertidor y le pones que traduzca de VB .NET a c#. Espero que te sea de ayuda y quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    jueves, 30 de julio de 2020 1:00
    Moderador
  • hola

    Para poner una imagen en el cuerpo del mail necesitas de un LinkedResource

    Imagen Incorporada en Correo Electronico

    Si la captura la puedes tener en un MemoryStream podrias aplicarla quedando solo en memoria sin persistir fisicamente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 30 de julio de 2020 4:11
  • Hola si me sirve puedo obtener la imagen, Pero como podria hacer para no tener que guardarla en un picture box por que no la quiero visualizar, la quiero guardar en una imagen o en algún objeto para luego adjuntarla al cuerpo de un correo que genero en el mismo metodo.
    jueves, 30 de julio de 2020 14:07
  • Digamos que ya tengo el bitmap que contiene la imagen.

    Graphics gr= this.CreateGraphics();
                        Size size = this.Size;
                        Bitmap bitmap = new Bitmap(size.Width,size.Height, gr);
                        Graphics gr2 = Graphics.FromImage(bitmap);
                        gr2.CopyFromScreen(this.Location.X,this.Location.Y, 0,0, size );
                        Image Objt = bitmap;
    
    string html = "<h2>Hola, mira dónde estuve ayer:</h2>" +
                   "<img src='cid:imagen' />";
    
                        AlternateView htmlView =
                            AlternateView.CreateAlternateViewFromString(html,
                                                    Encoding.UTF8,
                                                    MediaTypeNames.Text.Html);
    
    //Aqui donde llamo a mi imagen, no la guardo en ninguna ubicacion solo la creo para que despues la llame en el linked source pero donde la incrusto
                        LinkedResource img =
                            new LinkedResource(@"C:\paisaje.jpg",
                                                MediaTypeNames.Image.Jpeg);
                        img.ContentId = "imagen";
    
                        htmlView.LinkedResources.Add(img);
                        mail.AlternateViews.Add(htmlView);


    jueves, 30 de julio de 2020 14:45
  • Hola BlackCode23,

    ¿Todavía tienes algún problema? Si tu último post es la respuesta a tu pregunta, por favor no olvides marcarlo como respuesta. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    viernes, 31 de julio de 2020 20:37
    Moderador