Проблема в том, что он не вращается вокруг центра прямоугольника, как вы заметили. Поэтому вам нужно перевести объект после его поворота.
e->Graphics->RotateTransform(degrees);
e->Graphics->TranslateTransform(posX, posY, MatrixOrder::Append);
e->Graphics->DrawRectangle(gcnew Pen( Color::Blue,3.0f ), -width / 2, -height / 2, width, height);
градусов - это величина, которую вы хотите повернуть в своем прямоугольнике. posX и posY - это позиция, где вы хотите нарисовать его на экране.
Также вам необходимо убедиться, что вы передали MatrixOrder :: Append, иначе порядок трансформации может быть изменен, и это повлечет за собой преобразование перед поворотом (что даст вам эффект, аналогичный тому, что вы видите)