/// <summary> /// Set cursor and resize new polyline /// </summary> public override void OnMouseMove(DrawingCanvas drawingCanvas, Point position, MouseButtonState leftButton, MouseButtonState rightButton) { drawingCanvas.Cursor = ToolCursor; if (leftButton != MouseButtonState.Pressed) { return; } if (!drawingCanvas.IsMouseCaptured) { return; } if (newPolyLine == null) { return; // precaution } double distance = (position.X - lastX) * (position.X - lastX) + (position.Y - lastY) * (position.Y - lastY); double d = drawingCanvas.ActualScale <= 0 ? minDistance * minDistance : minDistance * minDistance / drawingCanvas.ActualScale; if (distance < d) { // Distance between last two points is less than minimum - // move last point newPolyLine.MoveHandle(position, newPolyLine.HandleCount); } else { // Add new segment newPolyLine.AddPoint(position); lastX = position.X; lastY = position.Y; } }