0

我知道如何在 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。当我使用此代码并且我的 Horizo​​ntalOffset 为 0(所以我根本没有滚动)时,一切都很好,我得到了 ScrollViewer-Control 的图像就好了。

但是,当我滚动 ScrollView 并以相同的方式制作快照时。截图全乱了。

如何像使用滚动视图的“0 到 600”区域一样制作滚动视图内容的可见“400 到 1000”区域的快照?

4

0 回答 0