Я работал над этой проблемой сам.Я вполне уверен, что нет простого способа сделать это, вам просто нужно взять ручку и бумагу и погрузиться в довольно утомительную тригонометрию!
Первое, на что нужно обратить внимание, это то, что представление *Свойство 1003 * выходит за границы (т. Е. Его значение не определено, когда к нему применено преобразование вращения), поэтому вместо этого необходимо использовать свойства bounds
и center
.Тогда вам просто нужно вычислить новые границы и центральную позицию на основе текущего угла.Скука приходит с осознанием того, что bounds
больше не выровнены по горизонтальной и вертикальной оси, тогда как координаты center
, конечно, являются, следовательно, необходимыми ручкой и бумагой.Ваши расчеты будут немного отличаться для каждого дескриптора, однако вы можете просто избежать копирования кода одного дескриптора и изменения некоторых знаков плюс / минус.
На самом деле, если честно, после того, как вы приняли решениечтобы сделать это, это не так уж плохо.Моя собственная реализация ограничивала размер и ширину изменяемого вида, и это было самым сложным.Чтобы заставить себя вести себя так, как ожидал пользователь, может потребоваться немного усилий, но оно того стоит.