Ich definiere Formen, die von der Klasse Shape
erben und implementieren die 'Geometrie' Eigenschaft.mouse move ist schneller als redraw wpf
Hier ist ein Beispiel:
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();
}
}
}
Wenn ich auf den Shape
klicken und die Maus bewegen, erwarte ich, dass die Shape
in der neuen Position neu gezeichnet werden - und es funktioniert.
Allerdings, wenn ich die Maus „zu“ schnell bewegen, dann ist ich „verlassen“ das OnMouseMove
Ereignis und die shape
wird in der letzten Position, die der Mauszeiger und die Shape
‚s Lage war in„stuck synchronisieren ".
Kann ein solches Problem gelöst werden?
Danke! Das hat perfekt funktioniert. – Idanis