Example #1
0
        //Опередление точные координаты границ прямоугольника
        private Point[] GetCornersPosition(Shape shape)
        {
            Point [] corners = new Point[4];
            double   angle   = GraphicElements.GetRotationAngle(shape);
            Rect     rect    = GraphicElements.GetPosition(shape);
            Point    Center  = GraphicElements.GetCenter(rect);
            //Определяем координаты углов прямоугольника без учёта угла поворота
            Point           LeftTop         = new(rect.X, rect.Y);
            Point           LeftBottom      = new(rect.X, rect.Y + rect.Height);
            Point           RightTop        = new(rect.X + rect.Width, LeftTop.Y);
            Point           RightBottom     = new(rect.X + rect.Width, LeftTop.Y + rect.Height);
            RotateTransform rotateTransform = new(angle, Center.X, Center.Y);

            //Определяем координаты углов прямоугольника с учётом угла поворота
            corners[0] = rotateTransform.Transform(LeftTop);
            corners[1] = rotateTransform.Transform(LeftBottom);
            corners[2] = rotateTransform.Transform(RightTop);
            corners[3] = rotateTransform.Transform(RightBottom);
            return(corners);
        }