如何获取WPF中列表的所有隐藏列表项的屏幕截图

时间:2015-04-21 03:30:33

标签: wpf

我在WPF应用程序中遇到问题,我想获取ListBox的截图。

该列表包含100多个项目,某些项目通过向下滚动隐藏。拍摄截图时,只能获取未隐藏在滚动中的项目。

你可以帮助我获取一个屏幕截图的所有项目吗?

1 个答案:

答案 0 :(得分:1)

如果ListView在将其渲染到图像时是可见的,您可以将它(最好是暂时的)放在ScrollViewer中,这将为它提供无限的布局空间,因此ListViewItems不会被渲染到远离渲染的位置,然后你可以在ListView上使用RenderTargetBitmap。

如果您不必显示ListView,则可以将其作为this answer shows在屏幕外显示,如下所示:

var listView = new ListView{ ItemsSource = ... etc }
listView.Measure(new Size(10000, 20000));
listView.Arrange(new Rect(new Size(10000, 20000)));

RenderTargetBitmap bmp = new RenderTargetBitmap(listView.ActualWidth, listView.ActualHeight, 96, 96, PixelFormats.Pbgra32);

bmp.Render(control);

var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
encoder.Save(somewhere);