Как вращать, перемещать и масштабировать объект управления вокруг определенной точки в WPF

У меня есть специально созданный элемент управления, который представляет собой прямоугольник с несколькими деталями внутри, но это прямоугольник.

У меня есть центральная точка (X,Y), которую я называю «Центром тяжести», которая «представляет» точку. Это означает, что когда я устанавливаю новую позицию для объекта, я хочу, чтобы эта точка находилась в заданной позиции. Когда я поворачиваю объект, мне нужно, чтобы он вращался вокруг этой точки. И когда я масштабирую объект, точка должна оставаться в заданном ранее положении. Должен измениться только размер объекта.

Например, чтобы получить простую картину проблемы, предположим, что у меня есть квадрат 10X10. Я установил центр тяжести точно в центр квадрата: (5,5). Затем я устанавливаю позицию объектов на (100, 100). Тогда квадрат окажется в:

(95,95), (105,95), (105,105), (95,105), что означает, что его центр будет в желаемом положении.

Если я масштабирую квадрат со значением 2, новые позиции по 4 точкам будут следующими:

(90,90), (110,90), (110,110), (90,110), что означает, что его центр останется в желаемом положении.

Если бы я повернул его на 45 градусов, он бы повернулся вокруг своего центра с позициями:

(92,93,92,93),(107,07,92,93),(107,07,107,07),(92,93,107.07)

Как это возможно сделать, когда его центр полностью настраивается, и все это трансформируется, чтобы быть прозрачным для программы в WPF? Я хотел бы только установить масштаб, положение, угол поворота и центр, чтобы он был правильно нарисован.

Спасибо!

5
задан jpnavarini 28 May 2012 в 23:48
поделиться