Не совсем то, что я хотел, но ответ меня натолкнул на правильное решение.
Выглядит это так. Форма (кусок):
object RectPaper: TRectangle
Height = 217.000000000000000000
Position.X = 32.000000000000000000
Position.Y = 24.000000000000000000
Width = 369.000000000000000000
object RectElement: TRectangle
Fill.Color = xFFF3B4B4
Height = 57.000000000000000000
Position.X = 16.000000000000000000
Position.Y = 32.000000000000000000
RotationAngle = -20.000000000000000000
Width = 137.000000000000000000
end
end
Вращение:
procedure TFormTest.Button1Click(Sender: TObject);
var
H, W: single;
R: TRectF;
Center: TPointF;
X, Y: Single;
begin
// поворачиваем холст
W := RectPaper.Width;
H := RectPaper.Height;
RectPaper.Width := H;
RectPaper.Height := W;
// поворачиваем обьект на холсте
RectElement.RotationAngle := RectElement.RotationAngle + 90;
R := RectElement.BoundsRect;
Center := R.CenterPoint + RectElement.Position.Point;
X := Center.X - RectElement.Height * 0.5;
Y := Center.Y + RectElement.Width * 0.5;
RectElement.Position.Point := PointF(H - Y, X);
RectPaper.Repaint;
end;
В общем спасибо! Вопрос решён.