I found here an excellent solution for creating screenshots on the window descriptor. I edited it a little to fit my needs, the following happened:
using (var image = new Bitmap(rect.Right - rect.Left, rect.Bottom - rect.Top)) { using (var graphics = Graphics.FromImage(image)) { var hdcBitmap = graphics.GetHdc(); WinAPI.PrintWindow(Handle, hdcBitmap, 0); graphics.ReleaseHdc(hdcBitmap); } bmp = new Bitmap(image); } WinAPI is just a wrapper class of extern functions. But, if I'm not mistaken, the controls are also windows and have their own Handle. This method cannot take a snapshot of the control. Yes, I know about DrawToBitmap, but how to rewrite this method so that it works in both cases, because absolutely any window descriptor can be passed.