所以我有一个部分绘制的 DrawingVisual,然后当我滚动时,我想绘制新区域并从 DrawingVisual 中删除旧区域。我将如何裁剪掉旧区域?
也许你可以简单地用空矩形覆盖当前的DrawingContext - 然后根据需要绘制每个新的thang,例如:
var drawingVisual = ...;
var drawingContext = dv.RenderOpen();
var fullRect = new Rect(new Point(160, 100), new Size(320, 80)); //full size rect
drawingContext.DrawRectangle(new SolidColorBrush(), new Pen(), fullRect);
//other drawings...
drawingVisual.Close();
我想我找到了问题的答案。绘图视觉的指令存储在其中,您可以创建一个新视觉,然后获取新视觉的绘图上下文并在设置裁剪区域时绘制旧视觉。还没有测试过,但应该可以。谢谢大家的建议
我不知道我是否理解你的意思,但我会开始使用任何绘图元素的剪辑, 例如,我用它来删除绘图中的特定点:
Timer DispatcherTimer = new DispatcherTimer();
timer.Tick += (x, y) =>
{
var pos = Mouse.GetPosition(this);
var r = new RectangleGeometry(new Rect(Xpos, Ypos, 1, 1)).GetOutlinedPathGeometry();
var r2 = new RectangleGeometry(new Rect(0, 0, this.Width, this.Height)).GetOutlinedPathGeometry();
i.Clip = new CombinedGeometry(GeometryCombineMode.Exclude,r2,r);
};
timer.Interval = new TimeSpan(2);
timer.Start();