public static PointF[] ToRotatedRectangle(Shapes.Rectangle s) { s.ToRawResolution(); PointF[] p = new PointF[5]; p[0].X = (float)s.Left; p[0].Y = (float)s.Top; p[1].X = (float)s.Right; p[1].Y = (float)s.Top; p[2].X = (float)s.Right; p[2].Y = (float)s.Bottom; p[3].X = (float)s.Left; p[3].Y = (float)s.Bottom; p[4].X = (float)s.Left; p[4].Y = (float)s.Top; // roate about center double angle = s.A * Math.PI / 180d; PartLocation center = new PartLocation(s); for (int i = 0; i < p.Length; i++) { PartLocation pp = new PartLocation(p[i]) - center; //shift to zero pp = pp.Rotate(angle) + center; p[i] = pp.ToPointF(); } return p; }