У меня есть код, который собирает все окна, связанные с приложением, отображает их в виде растровых изображений и сохраняет их в List<BitmapSource>
для последующей обработки и обработки.
Моя проблема в том, что если окно свернуто, изображение представляет собой просто увеличенную панель инструментов, а не изображение всего окна. Есть ли способ убедиться, что я захватил увеличенное окно или, может быть, развернул все окна, прежде чем я их соберу?
Редактировать: я бы предпочел не разворачивать все окна только для того, чтобы делать снимки экрана, если у пользователя есть минимизированные.
Вот соответствующий код:
public static List<BitmapSource> RenderWindows()
{
var windows = Application.Current.Windows
.OfType<Window>()
.Where(x => x.GetType() != typeof(AskAQuestionDialog) & x.GetType() != typeof(SelectScreenShots));
var bitmaps = new List<BitmapSource>();
foreach (var window in windows)
{
var bitmap = new RenderTargetBitmap((int)window.Width, (int)window.Height, 96d, 96d, PixelFormats.Default);
bitmap.Render(window);
bitmaps.Add(bitmap);
}
return bitmaps;
}