我正在尝试截取一个数据网格的屏幕截图,但是它有太多行无法显示,因此需要使用滚动条。
当我将数据网格放入RenderTargetBitmap的Render方法中时,我只会得到可见部分的数据网格,这是显然的。
据我了解,可以在渲染控件的ScrollViewer的ItemsPresenter时,拍摄该内容的屏幕截图,因为ItemsPresenter将具有内容的“实际”宽度和高度。
不幸的是,我的ScrollViewer没有任何不同于dataGrid的Height、ActualHeight或RenderSize.Height。 因此,我总是只能获得内容的可见部分。
请问是否有正确的方法可以完整地截取整个内容?
代码:
不幸的是,我的ScrollViewer没有任何不同于dataGrid的Height、ActualHeight或RenderSize.Height。 因此,我总是只能获得内容的可见部分。
请问是否有正确的方法可以完整地截取整个内容?
代码:
var scroll = GetTemplateChildByName(dataGridInOut);
if (scroll != null)
{
var item = scroll.Content as ItemsPresenter;
var width = item.RenderSize.Width;
var height = item.RenderSize.Height;
var rtb = new RenderTargetBitmap((int) Math.Round(width), (int)Math.Round(height), 96, 96,
PixelFormats.Pbgra32);
var drawingVisual = new DrawingVisual();
var visualBrush = new VisualBrush(item);
using (var context = drawingVisual.RenderOpen())
{
context.DrawRectangle(visualBrush, null, new Rect(new Point(0,0), new Size(width, height)));
}
rtb.Render(drawingVisual);
Clipboard.SetImage(rtb);
}