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のScrollViewerと1000pxのコンテンツがあります。このコードを使用し、Horizo​​ntalOffset が 0 の場合 (つまり、まったくスクロールしていない場合)、すべて問題なく、ScrollViewer-Control の画像が正常に表示されます。

ただし、ScrollView をスクロールして、同じ方法でスナップショットを作成すると。スナップショットはすべてめちゃくちゃです。

スクロールビューの「0 から 600」領域でできるように、スクロールビュー コンテンツの「400 から 1000」領域のスナップショットを作成するにはどうすればよいですか?

4

0 に答える 0