gpt4 book ai didi

c# - WPF UIElement 刷新错误?

转载 作者:太空狗 更新时间:2023-10-29 21:58:59 25 4
gpt4 key购买 nike

我有一个自定义面板,用来绘制选区效果;但有时它不会清除以前的矩形,如果在屏幕足够大(跨两个显示器)时来回移动鼠标,这是 WPF 错误或限制吗?你知道如何解决这个问题吗?提前致谢。

简化后的代码如下所示

public class CustomPanel : Panel
{
private Rectangle _rectangle;

public CustomPanel()
{
this._rectangle = new Rectangle();
this._rectangle.StrokeThickness = 3;
this._rectangle.Stroke = new SolidColorBrush(Color.FromArgb(220, 0, 0, 0)); ;
this.Children.Add(this._rectangle);
}

protected override Size MeasureOverride(Size availableSize)
{
this._rectangle.Measure(availableSize);
return this._rectangle.DesiredSize;
}

protected override Size ArrangeOverride(Size finalSize)
{
if (!finalSize.IsEmpty)
{
this._rectangle.Arrange(new Rect(new Point(0, 0), finalSize));
}
return finalSize;
}
}

然后我把它放在一个网格中,并在鼠标移动时使它无效,就像这样

 void OnMouseMove(object sender, MouseEventArgs e)
{
var point = e.GetPosition(this);
var size = new Size(point.X>=0? point.X:0, point.Y>=0? point.Y:0);
this.Selection.Measure(size);
this.Selection.Arrange(new Rect(size));

}

结果如下图所示 enter image description here

最佳答案

试试 UIElement.InvalidateVisual();

关于c# - WPF UIElement 刷新错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com