gpt4 book ai didi

c# - 鼠标移动比重绘 wpf 快

转载 作者:行者123 更新时间:2023-11-30 15:21:05 26 4
gpt4 key购买 nike

我正在定义继承自 Shape 类并实现“几何”属性的形状。

这是一个例子:

public class Landmark : Shape
{
public override bool IsInBounds(Point currentLocation)
{

return (((currentLocation.X >= Location.X - 3) && (currentLocation.X <= Location.X + 3)) && ((currentLocation.Y >= Location.Y - 3) && (currentLocation.Y <= Location.Y + 3)));
}

protected override Geometry DefiningGeometry
{
get
{
var landMark = new EllipseGeometry {Center = Location};

Stroke = Brushes.Red;
return landMark;
}
}

protected override void OnIsMouseDirectlyOverChanged(DependencyPropertyChangedEventArgs e)
{
StrokeThickness = IsMouseDirectlyOver ? 12 : 6;
Mouse.OverrideCursor = IsMouseDirectlyOver ? Mouse.OverrideCursor = Cursors.ScrollAll : Mouse.OverrideCursor = Cursors.Arrow;
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Location = e.GetPosition(this);
InvalidateVisual();
}
}
}

当我点击 Shape 并移动鼠标时,我希望 Shape 在新位置重新绘制 - 它确实有效。

但是,如果我“太”快地移动鼠标,那么我就会“离开”OnMouseMove 事件,并且 shape 会卡在最后一个位置鼠标指针和 Shape 的位置“同步”。

这样的问题能解决吗?

最佳答案

是的,by capturing the Mouse .

要实现这一点,您必须确定何时捕获以及何时释放。由于您希望它与鼠标左键一起使用,因此您可以在 OnMouseDown 中捕获并在 OnMouseUp 中释放鼠标。

关于c# - 鼠标移动比重绘 wpf 快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332211/

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