Jak zrobić Screen capture z a.Net WinForms steruje programowo?
Jak programowo uzyskać obraz kontrolki. Net?
7 answers
Istnieje metoda na każdej kontroli o nazwie DrawToBitmap . Nie musisz tego robić.
Control c = new TextBox();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(c.Width, c.Height);
c.DrawToBitmap(bmp, c.ClientRectangle);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-05 18:27:34
Można uzyskać obraz sterowania. NET programowo dość łatwo za pomocą DrawToBitmap metoda klasy kontrolnej zaczynającej się w. NET 2.0
Oto próbka w VB
Dim formImage As New Bitmap("C:\File.bmp")
Me.DrawToBitmap(formImage, Me.Bounds)
A tu jest w C#:
Bitmap formImage = New Bitmap("C:\File.bmp")
this.DrawToBitmap(formImage, this.Bounds)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-09 09:56:13
Kontrola.DrawToBitmap pozwoli Ci narysować większość kontrolek na bitmapie. To nie działa z RichTextBox i niektórych innych. Jeśli chcesz je przechwycić, lub kontrolkę, która ma jedną z nich, musisz wykonać PInvoke, jak opisano w artykule code project http://www.codeproject.com/KB/graphics/imagecapture.aspx , zasugerowane przez Jeffa. Uważaj, aby niektóre z tych metod przechwyciły to, co jest na ekranie, więc jeśli masz inne okno zakrywające twoją kontrolę, otrzymasz to zamiast tego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-05 20:45:02
Dla kontrolek WinForms, które ją obsługują, istnieje metoda w systemie.Okna.Formularze.Klasa kontroli:
public void DrawToBitmap(Bitmap bitmap, Rectangle targetBounds);
Nie działa to jednak ze wszystkimi kontrolkami. Zewnętrzni dostawcy komponentów mają bardziej kompleksowe rozwiązania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-05 18:28:09
Oto Jak to zrobić dla całego Form
, a nie tylko dla obszaru klienta (który nie ma paska tytułu i innych ubrań)
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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-06 23:25:39
Jeśli nie znajduje się na kontrolce, którą próbujesz wykonać, zwykle możesz rzucić ją do podstawowej klasy kontrolnej i wywołać tam metodę DrawToBitmap.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-05 18:36:28
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
Uwaga: jego praca w porządku
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-09 21:40:01