Название: проблема с TransformOriginPoint Отправлено: alexey11111 от Март 07, 2013, 17:43 Друзья, подскажите где собака порылась.
Есть объект класса, унаследованного от QGraphicsItem - квадратик. Этот квадратик можно вращать колесиком мышки, а также изменять его размер, потянув за бока. Проблема в том, что если квадратик сначала повернуть, затем изменить его размер, а затем опять повернуть, то он при повороте сначала перескакивает в некоторую близлежащую точку, а затем начинает нормально вращаться. Видимо, проблема с координатами в setTransformOriginPoint. В аттаче проект: Cropper - это, собственно, интересующий квадратик. Resizer - это объекты на боках квадратика для изменения размеров. Вращение реализовано через перекрытие wheelEvent в Cropper. Если нетрудно, подскажите что не так. Название: Re: проблема с TransformOriginPoint Отправлено: ConConovaloff от Март 07, 2013, 23:56 Добрый день,
Я не изучал еще 2d отрисовку и не могу подсказать правильный код. Но происходит следующее: В первом варианте, если закомментировать setTransformOriginPoint определяющую точку вокруг которой поворачивается изображение, то скачков не будет. Потому что - верхняя левая точка от которой рисуется квадрат всегда будет на своем месте. И при растяжение и при повороте, точка откуда считается квадрат неподвижна. В вашем варианте, когда вы поворачиваете квадрат с setTransformOriginPoint, точка от которой рисуется квадрат все еще остается на прежнем месте, а левый-верхний угол квадрата отворачивается от нее. При этом, когда наклон квадрата 0 (или 360), его верхний левый угол должен соответствовать точке 0, 0. При изменение размера + повороте, квадрат смещается, чтобы соответствовать этой точке. Одним из возможных решениев будет - избавиться от setTransformOriginPoint и рисовать квадрат в минус, чтобы середина отрисовки была в середине квадрата: Код
Название: Re: проблема с TransformOriginPoint Отправлено: alexey11111 от Март 08, 2013, 00:40 ConConovaloff, спасибо, это работает. :)
|