none
Capturar un area de la pantalla en v. net

    Question

  • hola, 

    estoy tratando de buscar  una forma de poder   captura un area de la pantalla, pero que no lo guarde en una imagen , solo lo tenga almacenado (no se como se dice cuando copias algo, o lo que hace cuando uno presiona em boton impr pant), para posteriormente irme a otra aplicacion sea correo, archivo de office o paint

    por ejm si pongo este codigo en un boton  ....    SendKeys.SendWait("{PRTSC 2}")

     capturo toda la pantalla y puedo irme a paint y hacer control+ v y pega lo capturado

    quiero hacer lo mismo pero capturando solo un area de la pantalla.

    por lo que busque, con el codigo de abajo puedo capturar un area de la pantalla dandole los parametros, pero no se como aplicar para despues poder pegarlo en cualquier otro lado, si haber generado antes una imagen.

    ojala puedan ayudarme con este tema. gracias!

    Dim oBounds As Rectangle
      Dim oScreenShot As System.Drawing.Bitmap
      Dim oGraph As Graphics
      oBounds = Label1.Bounds

      Dim iX As Integer = Me.Left + Label1.Left + 4 + (nbxX.Value) 
      Dim iY As Integer = Me.Top + Label1.Top + 26 + (nbxY.Value) 

      oScreenShot = New System.Drawing.Bitmap(oBounds.Width, oBounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
      oGraph = Graphics.FromImage(oScreenShot)
      oGraph.CopyFromScreen(iX, iY, 0, 0, oBounds.Size, CopyPixelOperation.SourceCopy) 'hace la captura en el lienso oScreenShot.

     

    Tuesday, January 15, 2013 11:31 PM

Answers

All replies

  • solo tienes que copiar la imagen al portapapeles del windows.

    Clipboard.SetDataObject(oScreenShot)
    

    y Listo...

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    • Marked as answer by alex Vc Wednesday, January 16, 2013 11:21 PM
    Wednesday, January 16, 2013 2:06 PM
    Moderator
  • muchas gracias !
    Wednesday, January 16, 2013 11:25 PM
  •  Marvin, disculpa la molestia

    estoy usando este condigo para capturar: 

    Dim bounds As Rectangle
            Dim screenshot As System.Drawing.Bitmap
            Dim graph As Graphics
            bounds = Screen.PrimaryScreen.Bounds

            screenshot = New System.Drawing.Bitmap(1095, 465, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
            graph = Graphics.FromImage(screenshot)
            graph.CopyFromScreen(7, 40, 0, 0, bounds.Size)

            Clipboard.SetDataObject(screenshot)

    el cual si funciona en una aplicacion de escritorio pero cuando lo hago en una aplicacion web  y lo ejecuto me sale el siguiente error

    "El subproceso actual debe establecerse en el modo de subprocesamiento controlado simple (Single Thread Apartment, STA) para poder realizar llamadas OLE. Asegúrese de que la función Main tiene marcado STAThreadAttribute."

    espero tu ayuda, gracias! 


    Thursday, January 17, 2013 5:20 PM
  • mmmmm.... pero eso no creo que lo puedas hacer desde la Web, de por si el metodo solo tiene una excepcion para windows así que asumo que no funcionara en Web.

    revisar este link: http://www.codeproject.com/Questions/323611/Screen-capture-in-vb-2010-web-form

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    Thursday, January 17, 2013 5:39 PM
    Moderator
  • aqui hay un ejemplo de como hacer desde una aplicación web: http://www.codegod.com/Screenshot-of-Webpage-with-ASP-NET-AID398.aspx

    pero como veras... se auxilia de otra window aplicación que se encarga de tomar la foto para luego subirla.

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    Thursday, January 17, 2013 5:53 PM
    Moderator
  • Marvin, pero quiero que el boton este en mi aplicacion web, no habria otra forma??

    lo que quiero  es que capture un area de la pantalla desde mi aplicacion web con un boton  y copiarlo al portapapeles.

    alguna  otra solucion porfa.

    gracias de antemano 

    Thursday, January 17, 2013 8:01 PM
  • pues según el ejemplo del Link el boton estaria en la pagina web el cual invocaria un programa local no web, el cual tomaria la imagen y la pasaria a la pagina web o hasta colocarla en el porta papeles del windows, pero directamente desde la web no lo podras hacer tan facil.

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    Thursday, January 17, 2013 8:14 PM
    Moderator