Как работает RotateTransform? Могу ли я изменить точку на прямоугольнике, где он вращается? - PullRequest
0 голосов
/ 29 февраля 2020

Я не понимаю, как работает смещение RenderTransform. Я хочу повернуть прямоугольник вокруг точки. В частности, я хочу, чтобы прямоугольник вращался вокруг точки, равной половине ширины. Вот скриншот: enter image description here

Вот код:

   RotateTransform rotateTransform1 = new RotateTransform(angle, 0 , 0  );

        myRectangle.RenderTransform = rotateTransform1;

Я пробовал разные значения, чтобы заменить 0 (например, width / 2). Кажется, это меняет положение центра экрана на экране. Что мне нужно изменить, так это то, какая часть прямоугольника вращается вокруг. В частности, я хочу, чтобы прямоугольник вращался вокруг точки, которая находится посередине его ширины.

Можно ли даже отрегулировать точку прямоугольника, в которой он вращается?

1 Ответ

1 голос
/ 29 февраля 2020

use RenderTransformOrigin

RenderTransformOrigin имеет несколько нестандартное использование значения структуры Point, так как Point не представляет абсолютное местоположение в системе координат. Вместо этого значения между 0 и 1 интерпретируются как коэффициент для диапазона текущего элемента в каждой оси x, y. Например, (0.5,0.5) приведет к центрированию преобразования рендера на элементе, или (1,1) поместит преобразование рендеринга в нижний правый угол элемента.

myRectangle.RenderTransformOrigin = new Point(0.5,0.5);
myRectangle.RenderTransform = rotateTransform1;
...