可见区域ScrollViewer的WPF快照

时间:2014-04-03 13:56:22

标签: c# wpf scrollviewer snapshot rendertargetbitmap

我知道如何在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);

但是现在我的ScrollViewer宽度为600px,内容为1000px。 当我使用这个代码并且我的horizo​​ntalOffset为0时(所以我还没有滚动),那么一切都很好,我得到了ScrollViewer-Control的图像就好了。

然而,当我滚动ScrollView并以同样的方式制作快照时。快照都搞砸了。

如何制作可见' 400到1000'的快照?滚动视图内容的区域就像我可以使用' 0到600' scrollview的区域?

0 个答案:

没有答案