domingo, 16 de febrero de 2014

17- Captura de Zonas de la Pantalla con Visual Basic (VB.NET).Graphics

Se trata de una pequeña aplicacion que permite hacer Capturas de Zonas de la Pantalla, definidas por el usuario, ademas de Capturas de Pantalla Completa. 


Codigo y Detalles
Descarga del Proyecto Completo

12 comentarios:

  1. Un saludo.

    En primer lugar, decirte que tienes un blog impresionante y que ya me gustaria tener tus conocimientos y habilidades. Esto que te digo es totalmente sincero y no es coba...

    Después de ver tu video sobre la captura de pantalla he pensado (aunque no le he visto en tu blog ni por ninguna parte, y llevo dias buscando...) el poder capturar el texto de una parte cualquiera de la pantalla, al igual que haces con la imagen en ti video pero solo el texto.

    Poder hacer un formulario casi transparente y poder moverlo y ajustar la zona para coger solo el texto e introducirlo en una variable para poder manejarlo.

    Se que estarás ocupado pero te lo agradecería enormemente. No hace falta que hagas el vídeo, con el código solo me bastaría.

    Muchas gracias por todo y repito... para mi... el mejor blog de visual basic por calidad e imaginación en los proyectos.

    Hasta pronto...

    ResponderEliminar
    Respuestas
    1. Hola. Muchas gracias por tus comentarios ayudan a mantener la motivacion.
      Las capturas de pantalla son imagenes de partes o de la totalidad de la pantalla. Son una especie de foto de la zona, por lo que no se puede poner su contenido en una variable a no ser una variable de imagen (Picturebox, etc). Para lo que planteas se tendria que utilizar reconocimiento de texto desde una imagen. Estudiare el tema y te dire algo. Saludos

      Eliminar
    2. Hola: Tal como te comente he estudiado un poco el tema y efectivamente lo que pides es una forma de reconocimiento de imagenes. Para tu caso se llama OCR (Optical Character Recognition). Es un tema muy complejo relacionado con el Reconocimiento de Caras, Reconocimiento de Objetos, etc. Parece que en estos momentos quien mas ha progresado en estos temas es OPENCV y su adaptación a .NET EMGU.CV. Yo tratare estos temas mas adelante, en este momento me es imposible. Pero si te interesa el tema te sugiero que escribas OCR vb.net en Google y encontraras varios videos sobre ello. Por ejemplo este:
      https://www.youtube.com/watch?v=Kjdu8SjEtG0
      Si solo escribes OCR encontraras otras formas de utilización(web, Office, etc).
      Si tienes problemas y crees que puedo ayudarte deja un comentario. Saludos.

      Eliminar
    3. Un saludo Amigo.

      Muchas gracias por responder. He consultado yo también sobre el OCR y tienes razón al decir que es algo muy complejo.

      He pensado que quizás no me explique bién por eso te explico mejor lo que me gustaría conseguir...

      Lo primero es que no me hace falta sacar el texto de una imagen sino solo el texto que aparece en la pantalla. Si accedemos a cualquier página web y hacemos control-A para seleccionar y control-C para copiar el texto de la pantalla, este se nos copia en el portapapeles, y después... no se si habría alguna instrucción o un código especial para coger el texto del portapapeles y pegarlo en un textbox o introducirlo directamente en una variable del progarma.

      Espero que estas puntualizaciones nos puedan ayudar a conseguirlo.

      Te agradezco sinceramente tu desinteresada ayuda y el tiempo que utilizas en ayudarme, y en ayudar a los demás...

      Un fuerte abrazo y hasta pronto.

      Eliminar
    4. Hola: Lo que planteas es muy sencillo .La instrucción a la que te refires es esta:
      Clipboard.GetText
      Por ejemplo: Tienes un form con un textbox y un botón. Seleccionas un texto y con Ctrl+C o con el raton derecho (copiar) el texto se situa en el portapapeles(Clipboard). Al pulsar el botón, el texto seleccionado se copia en el textbox y además se carga en una variable global que podrás utilizar en cualquier parte de la aplicacion. Aquí tienes el código:

      Public Class Form1
      Dim TEXTO As String 'VARIABLE GLOBAL
      Private Sub ButtonCOPIAR_Click(sender As System.Object, e As System.EventArgs) Handles ButtonCOPIAR.Click
      TextBox1.Text = Clipboard.GetText ' EL TEXTO SELECCIONADO SE COPIA EN EL TEXTBOX
      TEXTO = TextBox1.Text ' EL TEXTO SELECCIONADO SE CARGA EN LA VARIABLE GLOBAL TEXTO.
      End Sub
      End Class

      Puedes descargarte el proyecto aquí:
      https://drive.google.com/file/d/0ByTP_tX3Lc7PeWNkUU4wOW91Z1E/edit?usp=sharing

      Si tienes alguna duda o no he entendido lo que necesitas deja un comentario. Saludos.

      Eliminar
    5. Un saludo... y muchas gracias por seguir con tus trabajos y respuestas.

      Bueno... a ver si por fin logro explicarme para que puedas entender lo que quiero hacer.
      Existen páginas de datos de bolsa y cotizaciones y estas cambian en tiempo real por lo que me es imposible por mera cuestión de tiempo estar ejecutando a mano y por bastante tiempo seguido los comandos de teclado control-a y control-c y despues control-v para pegarlo en visual basic.

      Lo que necesito es tener visual basic abierto (con el programa abierto) y a la vez abierta también (al lado en la pantalla) la página web de la que tengo que coger esos datos, (ellos ofrecen unas estadísticas al público en general y libremente sobre esos datos, pero yo quiero hacerme otro tipo de estadísticas con esos datos) por lo tanto... de lo que se trata, es de coger el texto de la pantalla de esa web (no me importa que recoja también el texto de visual basic y que mediante un timer visual basic coja el texto de esa web y lo almacene en una variable en visual basic para poder seguir yo con todo el resto de código.

      Como te dije he estado viendo muchas web incluso con java scritps y creo que tratan la pantalla y su texto con un objeto pariente o algo así y no se si pudiera hacerse eso o algo parecido con visual basic.

      Mi eterno agradecimiento y respeto por la labor que haces para todos nosotros.

      Hasta pronto... y espero haberme explicado mejor para no hacerte perder más tu tiempo.

      Eliminar
    6. Hola:Creo que ahora si lo entiendo. Lo que quieres es capturar datos(cotizaciones, etc) de una web (o varias) y ponerlos en una variables para su posterior utilización.
      Hay 2 formas de hacerlo 1) Con el componente WebBrowser o 2) Con WebClient .
      He hecho varias cosas con ellos pero quizás no están claros. Hare un proyecto especifico en los próximos días. Saludos.

      Eliminar
    7. Un saludo de nuevo amigo.

      En uno más de los intentos por conseguirlo yo inserté en el formulario el objeto WebBrowser, y le añadí un campo de texto para introducir la dirección web y un botón para ir hacia ella. Ejecuté el programa y mostró la página web, pero los datos no se actualizaban y se quedaban estáticos con la primera información que tenía al ejecutarse el programa.

      Como tengo el explorer y firefox con la seguridad al máximo decidí desconectar el cortafuegos y puse en la configuración del explorer a normal para ver si estaba ahí el problema. Cerré todos los programas y abrí de nuevo visual basic pero seguía igual... mostraba la página pero los valores que debían de cambiar no lo hacían y seguían estáticos.

      Por lo que no supe hacer nada más. He visto videos en youtube sobre el webbrowser pero luego tenían que ir progrando todos los comandos y menús, pero no ví nada que me pudiera ayudar.

      Bueno... sigo dándote las gracias por tu incondicional apoyo y por tu rapidez en las respuestas.

      Un abrazo y hasta pronto.

      Eliminar
    8. Hola:
      Estoy haciendo una aplicación que permite capturar datos de dos webs:
      1) IP Publica (Con y Sin WebBrowser)
      Ya funciona.
      2) Cotizaciones del IBEX35 a lo largo del dia (Sin WebBrowser)
      No puedo hacer pruebas por que la Bolsa cierra el fin de semana.
      Subire la aplicación y un video explicativo el próximo Miércoles.
      Saludos

      Eliminar
    9. Infinitamente agradecido. Estoy deseando de ver tu trabajo.

      Millones de gracias....

      Eliminar
    10. Hola: A ver si esto se parece mas a lo que necesitabas.
      http://visualbasictutoriales.blogspot.com.es/2014/09/obtener-datos-desde-pagina-web-con.html
      Si tienes alguna duda deja un comentario.
      Saludos.

      Eliminar
  2. Un saludo amigo.

    Como siempre... un excelente trabajo. No sabes cuanto te lo agradezco... de verdad.

    Voy a modificarlo para adaptar el código a lo que necesito y hacer mis gráficos.

    Muchas gracias por tu esfuerzo y contribución. Hasta pronto. Visitaré tu blog a menudo.

    ResponderEliminar