public async void MouseMove(object sender, MouseEventArgs e)
        {
            if (!IsControlDragged)
            {
                return;
            }

            // shape is being dragged
            var mousePos = e.GetPosition(_controlParentCanvas);

            controlCurrentCanvasTop = Canvas.GetTop(_controlElement);

            var s_gap = (controlSizeBaseWidth - controlSizeWidth) / 2;  // gap size between control and border

            // if dist to init pos is within check, set, otherwise set max
            var    move     = mousePos.Y - controlInitCenterTop;
            var    dist     = Math.Abs(move);
            double dist_max = controlSizeBaseHeight / 2 - s_gap - controlSizeHeight / 2;



            double top;

            if (dist <= dist_max)
            {
                top = mousePos.Y - controlSizeHeight / 2;
            }
            else  //
            {
                //MessageBox.Show(move.ToString());
                if (move >= 0)
                {
                    top = controlInitCanvasTop + controlSizeBaseHeight / 2 - s_gap - controlSizeHeight / 2;
                    Canvas.SetTop(_controlElement, top);
                }
                else
                {
                    top = controlInitCanvasTop - controlSizeBaseHeight / 2 + s_gap + controlSizeHeight / 2;
                    Canvas.SetTop(_controlElement, top);
                }
            }

            Canvas.SetTop(_controlElement, top);

            var travel = controlCurrentCanvasTop - controlInitCanvasTop;


            var direction = new MathNet.Spatial.Euclidean.Vector2D(0, travel).Normalize();


            if (controlMode == 0)  // control height
            {
                await Task.Run(() => CameraControl.VerticalMoveCamera(camera, direction, dist / dist_max));
            }
            else if (controlMode == 1)                 // control zoom
            {
                camera.zoomValue = -travel / dist_max; // set zoom value
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Method to Convert a 2D Line to a <see cref="MathNet.Spatial.Euclidean.Vector2D"/>
        /// </summary>
        /// <param name="_2DLinetoBeVectored">2D Line which is to be converted to 2D Vector of <see cref="MathNet.Spatial.Euclidean.Vector2D"/></param>
        /// <returns></returns>
        public static MathNet.Spatial.Euclidean.Vector2D GetMathNetVector2D(Line _2DLinetoBeVectored)
        {
            MathNet.Spatial.Euclidean.Vector2D vector2D = new MathNet.Spatial.Euclidean.Vector2D(_2DLinetoBeVectored.StartPoint.X - _2DLinetoBeVectored.EndPoint.X, _2DLinetoBeVectored.StartPoint.Y - _2DLinetoBeVectored.EndPoint.Y);

            return(vector2D);
        }