Wie erhalten Sie programmgesteuert ein Bild eines .Net-Steuerelements?Wie man eine .Net WinForms-Steuerung programmgesteuert mit einem Bildschirm erfasst?
Antwort
Es gibt eine Methode für jede Steuerung namens DrawToBitmap. Sie müssen dazu nicht p/invoke aufrufen.
Control c = new TextBox();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(c.Width, c.Height);
c.DrawToBitmap(bmp, c.ClientRectangle);
Für WinForms-Steuerelemente, die es unterstützt, gibt es ein Verfahren, in der System.Windows.Forms.Control Klasse:
public void DrawToBitmap(Bitmap bitmap, Rectangle targetBounds);
Dies ist jedoch nicht bei allen Kontrollen funktionieren. Anbieter von Drittanbieterkomponenten haben umfassendere Lösungen.
Sie programmatisch die DrawToBitmap Methode der Control-Klasse ziemlich leicht ein Bild von einer .NET-Kontrolle bekommen können .NET 2.0
Hier starten in einer Probe in VB
Dim formImage As New Bitmap("C:\File.bmp")
Me.DrawToBitmap(formImage, Me.Bounds)
Und hier ist es in C#:
Bitmap formImage = New Bitmap("C:\File.bmp")
this.DrawToBitmap(formImage, this.Bounds)
, wenn es nicht auf dem Co Wenn Sie versuchen, dies zu tun, können Sie es normalerweise in die Basissteuerklasse umwandeln und dort die DrawToBitmap-Methode aufrufen.
Mit Control.DrawToBitmap können Sie die meisten Steuerelemente in eine Bitmap zeichnen. Dies funktioniert nicht mit RichTextBox und einigen anderen. Wenn Sie diese oder ein Steuerelement mit einem davon erfassen möchten, müssen Sie PInvoke ausführen, wie in dem von Jeff vorgeschlagenen Code-Projektartikel http://www.codeproject.com/KB/graphics/imagecapture.aspx beschrieben. Achten Sie darauf, dass einige dieser Methoden alle auf dem Bildschirm angezeigten Bilder erfassen. Wenn Sie also ein anderes Fenster haben, das Ihre Kontrolle abdeckt, erhalten Sie das stattdessen.
Für WebBrowser, ich einfach zu steuern und es dort aufrufen. Ich habe es getan und weiß, dass es funktioniert. Nicht sicher über 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
Hinweis: Sein adaequat
Dies ist, wie es für eine ganzes Form
zu tun, nicht nur den Client-Bereich (die nicht auf die Titelleiste und anderen Verband haben)
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. PHP: Wie man Browserfensterbildschirm mit PHP erfasst?
- 2. Bildschirm programmgesteuert einschalten
- 3. .Net Browser-Bildschirm-Capture-Dienstprogramm
- 4. Bildschirm programmgesteuert deaktivieren Android
- 5. Kann ich programmgesteuert eine neue .NET-Version mit .NET installieren?
- 6. Wie programmgesteuert das Gateway mit .NET ändern?
- 7. Wie man eine beschäftigte Nachricht über einem wpf Bildschirm anzeigt
- 8. Wie vermeidet man eine Databinding/Ereignishölle auf einem komplexen Bildschirm?
- 9. Wie erfasst man alle Regex-Gruppen in einem Regex?
- 10. ersetzen Regex erfasst mit Werten aus einem Array (JavaScript)
- 11. Wie programmiere Bildschirm in Android programmgesteuert sperren?
- 12. Wie Bildschirm programmgesteuert in Linux trennen?
- 13. Wie man einen vollständigen Bildschirmfoto mit C# und WebKit.NET erfasst?
- 14. Wie man Verkehr in Python erfasst
- 15. Programmgesteuert inspizieren. NET-Code
- 16. Wie erfasst man die Ausgabe von printf?
- 17. C++ Lambda Callback - Wie erfasst man Variablen?
- 18. Wie erstellt man programmgesteuert eine benutzerdefinierte Farbpalette?
- 19. Ändern Sie eine web.config programmgesteuert mit C# (.NET)
- 20. Wie man Fingerbewegungsrichtung im androiden Telefon erfasst?
- 21. Wie konfiguriere ich eine Verbindungszeichenfolge config programmgesteuert in .net?
- 22. Bildschirm Google Earth auf einem Panel anzeigen?
- 23. Wie erfasst man untergeordnete Links, die mit jquery geklickt wurden?
- 24. Wie man zu einem anderen Bildschirm von einem Bildschirm in Xamarin Cross-Plattform gehen?
- 25. Wie navigiere ich von einem Bildschirm zu einem anderen Bildschirm?
- 26. Android GridLayout-decken ganzen Bildschirm programmgesteuert
- 27. Wie erstellt man eine eigenständige .Net-Kernanwendung?
- 28. Wie wird die Farbe am Bildschirm in der Mausposition mit Unity und C# erfasst?
- 29. Wie implementiert man eine .net 3-Tier-Architektur mit Winforms
- 30. Wie man schwarzen Bildschirm loszuwerden
Dies ist ein bisschen zu vage, versuchen zu erklären, was Sie versuchen zu tun. Nein wandern die Down-Stimmen ab. –
Keine Wanderung? Ich denke, die Bedeutung ist vollkommen klar. Er möchte eine Bitmap-Darstellung eines Steuerelements erhalten. – Will
Ich stimme Will zu. Es ist eine einfache und klare Frage. – Bogdan