Мой вопрос связан с этим: Как программно получить снимок экрана элемента управления WinNet Forms.
Я хочу сделать снимок экрана System.Windows.Forms.. Контроль в C #.Я использую метод DrawToBitmap, предложенный в вопросе, связанном выше, и это работает большую часть времени.Однако есть несколько проблем.
Задача 1 :
У меня есть две вкладки, назовем их A и B. Элемент управления, снимок которого я хочу сделать, находится на вкладке BЯ хочу сделать снимок экрана при нажатии кнопки на вкладке А.Это работает большую часть времени, за исключением случаев, когда вкладка B еще не была открыта: тогда скриншот просто белый.Если я сначала захожу на вкладку B, затем возвращаюсь на вкладку A и нажимаю кнопку, чтобы сделать снимок экрана, тогда он работает нормально.Я предполагаю, что это из-за некоторой загрузки или построения элемента управления на вкладке, который еще не был сделан, но я не уверен, что именно (или это может быть что-то еще полностью).Я пытался форсировать эту загрузку или сборку с помощью ResumeLayout, PerformLayout, Show, Update, Invalidate, но это не работает.
EDIT: Мне удалось решить эту проблему с помощью DrawToBitmap
насодержащий элемент управления вкладки вместо самого элемента управления и выполнение шоу на этой вкладке.
Проблема 2:
Когда я делаю снимок экрана определенного пользовательского элемента управления (подкласс UserControl)на скриншоте есть небольшая прямоугольная белая область (там, где ее явно не должно быть).Прямоугольная область находится не на одной конкретной части элемента управления, например на кнопке или текстовом поле, поэтому я не уверен, что является причиной этого.На других пользовательских элементах управления (также подклассах UserControl) он работает нормально, поэтому сама проблема не может быть.
РЕДАКТИРОВАТЬ: Решено, там был пустой элемент управления, который был нарисован сверхуэтогоУстановка Visible в false для этого элемента управления решила это.