martes, 9 de septiembre de 2014 – #Developer

En días recientes me tocó investigar sobre una forma para hacer una captura de lo que estaba mostrando en un control. No tenía que ser una captura de pantalla Global, ni una captura de pantalla del formulario, sino en específico de lo que estaba visualizando en un control que estaba en un formulario.

¿Qué control era y por qué la importancia de tomar una captura sólo a él?. El control era un control de Flash Player (conocidos como AxShockwaveFlash). En él estaba visualizando un archivo SWF y era importante poder tomar capturas del archivo que estaba reproduciendo en ese control.

¿Cómo hacer capturas de un control en VB.Net?

Investigando en internet encontré un código sencillo y fácil de comprender que podía solucionar mi problema. Éste código lo integré en un procedimiento (o método) y quedó de la siguiente forma:

Private Sub Capturar(ByVal _Control As Control, ByVal _GuardarEn As String)
  Dim Limites As Rectangle = _Control.Bounds
  Dim Puntos As Point = _Control.PointToScreen(Limites.Location)
  Dim Imagen As New Bitmap(Limites.Width, Limites.Height)

  Using Graficos As Graphics = Graphics.FromImage(Imagen)
      Graficos.CopyFromScreen(New Point(Puntos.X - _Control.Location.X, Puntos.Y - _Control.Location.Y), Point.Empty, Limites.Size)
  End Using

  Imagen.Save(_GuardarEn, ImageFormat.Png)

End Sub

NOTA: Si copias y pegas el código anterior es probable que te marque como error la línea ImageFormat.Png. Se soluciona importando la clase Imaging (Imports System.Drawing.Imaging).

Ahora solo lo que hice fue llamarlo desde el código de mi aplicación:



¿Este artículo fue de utilidad?

Si tu respuesta es SÍ puedes hacermelo saber con un Gracias e incluso lo puedes compartir a tus seguidores a través de un Tweet.

Opcionalmente puedes realizar un donativo para comprar más café con la finalidad de mantenerme despierto y seguir escribiendo más artículos.