Russian Qt Forum
Ноябрь 24, 2024, 10:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Поворот относительно заданной точки  (Прочитано 11582 раз)
QCasper
Гость
« : Ноябрь 18, 2005, 14:11 »

Есть QRect(0,0,240,240), например. Нужно повернуть его относительно центра на n градусов. Как? Если сделать так:

painter.rotate(n);
painter.drawRect(rt);

то поворачивается как известно вокруг (0,0)
Записан
burunduk
Гость
« Ответ #1 : Ноябрь 18, 2005, 15:57 »

1. сохранить матрицу преобразований
2. преобразовать нужным образом координаты
3. восстановить матрицу преобразований
Записан
QCasper
Гость
« Ответ #2 : Ноябрь 18, 2005, 18:02 »

Будьте любезны, для конкретного примера, который я привел, - кодом
Записан
burunduk
Гость
« Ответ #3 : Ноябрь 18, 2005, 18:42 »

извиняюсь
да, действительно не получается :-(
Записан
QCasper
Гость
« Ответ #4 : Ноябрь 18, 2005, 19:00 »

вот, вот Грустный
Записан
Sergeich
Гость
« Ответ #5 : Ноябрь 21, 2005, 17:13 »

А че painter.translate() не вставил?
Записан
burunduk
Гость
« Ответ #6 : Ноябрь 21, 2005, 17:56 »

код, пожалуйста, в студию
Записан
Sergeich
Гость
« Ответ #7 : Ноябрь 21, 2005, 18:30 »

Код:

painter.rotate(n);
painter.translate( rt.center().x(), rt.center.y() );
painter.drawRect(rt);
Записан
QCasper
Гость
« Ответ #8 : Ноябрь 21, 2005, 23:24 »

Цитата: "Sergeich"
Код:

painter.rotate(n);
painter.translate( rt.center().x(), rt.center.y() );
painter.drawRect(rt);


И че, работает?
Записан
comrade
Гость
« Ответ #9 : Ноябрь 23, 2005, 15:54 »

попробуй воттак:
Код:

QRect rt(200,100,140,200);
QPoint c = QPoint( rt.center().x(), rt.center().y() );
double angle = 15.0;

QWMatrix wm1;
wm1.translate( -c.x(), -c.y() );
QWMatrix wm2;
wm2.rotate( angle );
QWMatrix wm3;
wm3.translate( c.x(), c.y() );
painter.setWorldMatrix( wm1 * wm2 * wm3 );

painter.drawRect( rt );

повернётся вокруг центра прямоугольника rt
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.042 секунд. Запросов: 20.