wpf 如何清除 DrawingVisual 的区域

问题描述 投票:0回答:3

所以我有一个部分绘制的 DrawingVisual,然后当我滚动时,我想绘制新区域并从 DrawingVisual 中删除旧区域。我将如何裁剪掉旧区域?

c# wpf
3个回答
0
投票

也许你可以简单地用空矩形覆盖当前的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();

0
投票

我想我找到了问题的答案。绘图视觉的指令存储在其中,您可以创建一个新视觉,然后获取新视觉的绘图上下文并在设置裁剪区域时绘制旧视觉。还没有测试过,但应该可以。谢谢大家的建议


0
投票

我不知道我是否理解你的意思,但我会开始使用任何绘图元素的剪辑, 例如,我用它来删除绘图中的特定点:

        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();
© www.soinside.com 2019 - 2024. All rights reserved.