private Point MoveWithNegative270Rotation(Point translation, CustomControl control)
        {
            double dx = Canvas.GetLeft(control) + translation.Y;

            double dy = Canvas.GetTop(control) - translation.X;

            Canvas.SetTop(control, dy);

            Canvas.SetLeft(control, dx);

            this.CheckControlBounds(control);

            Point point = new Point(Canvas.GetLeft(control) + control.Width / 2,
                Canvas.GetTop(control) + control.Height / 2);

            return point;
        }
        private void CheckControlBounds(CustomControl control)
        {
            if ((Canvas.GetLeft(control) + control.Width / 2) < 0) Canvas.SetLeft(control, -control.Width / 2);

            if (Canvas.GetLeft(control) + control.Width / 2 > this.vb.ActualWidth)
                Canvas.SetLeft(control, this.vb.ActualWidth - control.Width / 2);

            if ((Canvas.GetTop(control) + control.Height / 2) < 0) Canvas.SetTop(control, -control.Height / 2);

            if (Canvas.GetTop(control) + control.Height / 2 > this.vb.ActualHeight)
                Canvas.SetTop(control, this.vb.ActualHeight - control.Height / 2);  
        }