Даниэль, все, что тебе говорят, правильно. Если у вас есть Прямоугольник, и вы установили начало координат на 0,5, 0,5, это означает «вращаться вокруг центроида этого объекта», поэтому, если вы поверните на 90 или 270 градусов, конечно, это будет выглядеть точно так же, как вы видите.
Если вы хотите, чтобы прямоугольник повернулся на 90 градусов и все же оказался в верхнем левом углу, вам нужно либо повернуть на 90, а затем перевести в X и Y, чтобы угол совпадал с 0,0, или вам нужно вращаться вокруг другого центра (например, 0,0) и переводить только в X.
Вот пример:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Height="500" Width="500" Background="Green">
<Rectangle Canvas.Left="0" Canvas.Top="0" Height="50" Width="100" RenderTransformOrigin="0.5,0.5" Fill="Red">
<Rectangle.RenderTransform>
<TransformGroup>
<RotateTransform Angle="90" />
<TranslateTransform X="-25" Y="25" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Canvas.Left="0" Canvas.Top="0" Height="50" Width="100" RenderTransformOrigin="0.5,0.5" Fill="RoyalBlue">
<Rectangle.RenderTransform>
<RotateTransform Angle="0" />
</Rectangle.RenderTransform>
</Rectangle>
</Canvas>
</Page>
Возможно, было бы лучше, если бы вы объяснили, что вы действительно пытаетесь сделать с этим. Также странно, что вы говорите, что 0 и 180 - это здорово, потому что угол совпадает с 0,0, но тогда ваша фигура поворачивается, и мы не знаем, важно ли для вас сохранение ориентации.