Jak programowo uzyskać obraz kontrolki .Net?Jak programowo uzyskać zrzut ekranu programu .Net WinForms?
Odpowiedz
Na każdej kontroli znajduje się metoda o nazwie DrawToBitmap. Aby to zrobić, nie trzeba p/invoke.
Control c = new TextBox();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(c.Width, c.Height);
c.DrawToBitmap(bmp, c.ClientRectangle);
Dla kontroli WinForms, które go obsługują, nie jest to metoda w klasie System.Windows.Forms.Control:
public void DrawToBitmap(Bitmap bitmap, Rectangle targetBounds);
To nie działa ze wszystkimi sterownikami, jednak. Dostawcy komponentów innych producentów mają bardziej kompleksowe rozwiązania.
można uzyskać obraz kontroli NET programowo dość łatwo za pomocą DrawToBitmap metodę klasy sterowania począwszy od .NET 2.0
Oto przykład w VB
Dim formImage As New Bitmap("C:\File.bmp")
Me.DrawToBitmap(formImage, Me.Bounds)
A tutaj jest w języku C#:
Bitmap formImage = New Bitmap("C:\File.bmp")
this.DrawToBitmap(formImage, this.Bounds)
jeśli nie jest na stronie ntrol, który próbujesz zrobić, zwykle możesz go rzucić na podstawową klasę Control i wywołać tam metodę DrawToBitmap.
Control.DrawToBitmap pozwoli ci narysować większość kontrolek do bitmapy. To nie działa z RichTextBox i niektórymi innymi. Jeśli chcesz je przechwycić lub kontrolkę, która ma jedną z nich, musisz wykonać PInvoke, jak opisano w artykule o projekcie kodu http://www.codeproject.com/KB/graphics/imagecapture.aspx, zaproponowanym przez Jeffa. Uważaj, aby niektóre z tych metod uchwyciły wszystko, co jest na ekranie, więc jeśli masz inne okno, które obejmuje kontrolę, dostaniesz to zamiast tego.
Dla WebBrowser, po prostu wyrzucam do Control i tam go wołam. Zrobiłem to i wiem, że to działa. Nie jestem pewien co do 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
Uwaga: Jego pracy grzywny
To jak to zrobić dla całego Form
, a nie tylko obszaru roboczego (który nie posiada paska tytułowego i inne opatrunek)
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. Jak programować zrzut ekranu?
- 2. Jak programowo wykonać zrzut ekranu (Swift, SpriteKit)
- 3. jak zrobić zrzut ekranu?
- 4. jak programowo zrobić zrzut ekranu i zapisać go w galerii?
- 5. Jak programowo zrobić zrzut ekranu iPhone/iPad z Xamarin.iOS (C#)?
- 6. Jak zrobić zrzut ekranu z części UIView?
- 7. Zrzut ekranu z kamery internetowej
- 8. IPhone/iPad: Jak programowo uzyskać szerokość ekranu?
- 9. Zrzut ekranu w Haskell?
- 10. Android wykonuje zrzut ekranu
- 11. Opóźnienie zrzut ekranu iOS
- 12. Zrzut ekranu pokazuje czarny
- 13. Jak uzyskać zrzut ekranu pulpitu z bufora tylnego z DirectX
- 14. Android: Jak uzyskać framebuffer (zrzut ekranu) na zrootowanym urządzeniu?
- 15. Uzyskaj zrzut ekranu kontrolki przeglądarki?
- 16. Uzyskaj zrzut ekranu określonej aplikacji
- 17. Zrzut ekranu Firebase Query zero?
- 18. Zrzut ekranu okna z pytonem:
- 19. WindowLicker dla WinForms .NET?
- 20. Zrzut ekranu z całego ekranu przy użyciu html5/javascript?
- 21. Zrzut ekranu ignoruje niektóre okna
- 22. iPad 3 powolny zrzut ekranu
- 23. Jak wziąć zrzut ekranu Qt/QML
- 24. C#: jak zrobić zrzut części ekranu
- 25. Jak wykonać zrzut ekranu renderowanej strony HTML?
- 26. Jak wyświetlić "Zrzut ekranu: dostępny przez ekran"?
- 27. Jak zrobić zrzut ekranu pod Waylandem?
- 28. Zdarzenie KeyDown nie jest uruchamiane przy użyciu programu .NET WinForms?
- 29. Jak mogę uzyskać stan programu?
- 30. programowalny zrzut ekranu przedstawiający fałszywego sąsiada
To jest trochę zbyt ogólnikowe, spróbuj wyjaśnić, co próbujesz zrobić. Żadnych błądzących głosów. –
Nie wędrować? Myślę, że znaczenie jest całkowicie jasne. Chce uzyskać bitmapową reprezentację kontroli. – Will
Zgadzam się z Willem. To proste i jasne pytanie. – Bogdan