我知道如何在 WPF 中制作快照。
draggableObject = new Image();
AssociatedObjectParent.Children.Add(draggableObject);
Grid panel = AssociatedObject as Grid;
draggableObject.Height = panel.ActualHeight;
draggableObject.Width = panel.ActualWidth;
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
VisualBrush vb = new VisualBrush(AssociatedObject);
dc.DrawRectangle(vb, null, new Rect(new Point(0,0), new Size(draggableObject.Width, draggableObject.Height)));
}
double x = draggableObject.Width;
double y = draggableObject.Height;
RenderTargetBitmap renderTargetTd = new RenderTargetBitmap((int)x, (int)y, 96, 96, PixelFormats.Default);
RenderOptions.SetBitmapScalingMode(renderTargetTd, BitmapScalingMode.Fant);
RenderOptions.SetEdgeMode(renderTargetTd, EdgeMode.Aliased);
renderTargetTd.Render(dv);
但是现在我有这个 600px 宽和 1000px 内容的 ScrollViewer。当我使用此代码并且我的 HorizontalOffset 为 0(所以我根本没有滚动)时,一切都很好,我得到了 ScrollViewer-Control 的图像就好了。
但是,当我滚动 ScrollView 并以相同的方式制作快照时。截图全乱了。
如何像使用滚动视图的“0 到 600”区域一样制作滚动视图内容的可见“400 到 1000”区域的快照?