コード例 #1
0
        /// <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;
            }
        }