¿Cómo se obtiene programáticamente una imagen de un control .Net?¿Cómo obtener una captura de pantalla de un control .Net WinForms programáticamente?
Respuesta
Hay un método en cada control llamado DrawToBitmap. No necesita p/invocar para hacer esto.
Control c = new TextBox();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(c.Width, c.Height);
c.DrawToBitmap(bmp, c.ClientRectangle);
Para los controles WinForms que lo apoyan, hay un método en la clase System.Windows.Forms.Control:
public void DrawToBitmap(Bitmap bitmap, Rectangle targetBounds);
Esto no funciona con todos los controles, sin embargo. Los proveedores de componentes de terceros tienen soluciones más completas.
Usted puede obtener una imagen de un control mediante programación .NET con bastante facilidad utilizando el DrawToBitmap método de la clase control de arranque en .NET 2.0
Este es un ejemplo en VB
Dim formImage As New Bitmap("C:\File.bmp")
Me.DrawToBitmap(formImage, Me.Bounds)
Y aquí es en C#:
Bitmap formImage = New Bitmap("C:\File.bmp")
this.DrawToBitmap(formImage, this.Bounds)
si no es en la co ntrol que estás tratando de hacer, generalmente puedes lanzarlo a la clase base Control y llamar al método DrawToBitmap allí.
Control.DrawToBitmap le permitirá dibujar la mayoría de los controles en un mapa de bits. Esto no funciona con RichTextBox y algunos otros. Si desea capturar estos, o un control que tiene uno de ellos, entonces necesita hacer PInvoke como se describe en el artículo de proyecto de código http://www.codeproject.com/KB/graphics/imagecapture.aspx, sugerido por Jeff. Tenga cuidado de que algunos de estos métodos capturen lo que esté en la pantalla, de modo que si tiene otra ventana que cubra su control, lo obtendrá.
Para WebBrowser, simplemente lanzo a Control y lo llamo allí. Lo hice y sé que funciona. No estoy seguro acerca de RichTextBox – Nick
Panel1.Dock = DockStyle.None ' If Panel Dockstyle is in Fill mode
Panel1.Width = 5000 ' Original Size without scrollbar
Panel1.Height = 5000 ' Original Size without scrollbar
Dim bmp As New Bitmap(Me.Panel1.Width, Me.Panel1.Height)
Me.Panel1.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Panel1.Width, Me.Panel1.Height))
'Me.Panel1.DrawToBitmap(bmp, Panel1.ClientRectangle)
bmp.Save("C:\panel.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
Panel1.Dock = DockStyle.Fill
Nota: Su funcionamiento muy bien
Ésta es la forma en que lo haga por toda una Form
, no sólo el área de cliente (que no tiene la barra de título y otra vestidor)
Rectangle r = this.Bounds;
r.Offset(-r.X,-r.Y);
Bitmap bitmap = new Bitmap(r.Width,r.Height);
this.DrawToBitmap(bitmap, r);
Clipboard.SetImage(bitmap);
- 1. ¿Cómo tomar la captura de pantalla programáticamente?
- 2. Toma de captura de pantalla de una página web programáticamente
- 3. Android tome la captura de pantalla programáticamente
- 4. cómo tomar una captura de pantalla del iPhone programáticamente?
- 5. Tomar captura de pantalla de una página web (remota) programáticamente
- 6. capturar la captura de pantalla utilizando .NET
- 7. Necesito un .NET WinForms IP Address Control
- 8. Captura de pantalla de video en iOS programáticamente
- 9. ¿Cómo realizo programáticamente una captura de pantalla de una aplicación en Linux?
- 10. Captura de pantalla de la segunda pantalla
- 11. ¿Cómo puedo crear mediante programación una captura de pantalla de un sitio web determinado?
- 12. ¿Cómo se toma una "captura de pantalla" de un NSView?
- 13. ¿Cómo se toma una captura de pantalla de un sitio web a través del código .Net?
- 14. ¿Cómo puedo tomar una captura de pantalla de un sitio web con .NET?
- 15. Captura de pantalla de la pantalla actual
- 16. ¿Cómo tomar una captura de pantalla de una página web?
- 17. Pantalla de captura
- 18. Captura de pantalla Incluyendo ventanas semitransparentes en .NET
- 19. Android OpenGL Captura de pantalla
- 20. Obtenga una captura de pantalla de una página de ASP.Net
- 21. Cómo capturar una captura de pantalla en .NET desde una aplicación weba?
- 22. Captura de una captura de pantalla de un video incrustado usando C#
- 23. Obtener captura de pantalla en Windows con Python?
- 24. Cómo tomar una captura de pantalla con FireMonkey (multiplataformas)
- 25. Cómo establecer el orden Z de un control usando WinForms
- 26. Obtenga una captura de pantalla de una aplicación específica
- 27. ¿Cómo se desactivan .NET Winforms Controls sin cambiar su apariencia?
- 28. Captura de pantalla en Haskell?
- 29. Imagen de captura de pantalla en C++ en OSX
- 30. Captura de pantalla en android
Esto es un poco demasiado vago, intenta explicar qué estás tratando de hacer. No vagar por los votos hacia abajo. –
¿No deambula? Creo que el significado es perfectamente claro. Quiere obtener una representación de mapa de bits de un control. – Will
Estoy de acuerdo con Will. Es una pregunta simple y clara. – Bogdan