我在WPF应用程序中遇到问题,我想获取ListBox的截图。
该列表包含100多个项目,某些项目通过向下滚动隐藏。拍摄截图时,只能获取未隐藏在滚动中的项目。
你可以帮助我获取一个屏幕截图的所有项目吗?
答案 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);