Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT] Трудности с QPixmap::rotate()


Автор: Moby 24.5.2010, 19:22
Есть метод 
Код

paintEvent(QPaintEvent *event)
{
painter.drawPixmap(x,y,img);
}

x,y координаты мышки(хотя к делу не относится)

есть метод
Код

Draw_Pixmap_Rect()
{
    QPixmap pix(400,400);
    QPainter painter(&pix);
    painter.drawRect(200-size/2,200-size2/2,size,size2);        
}


Мне нужно развернуть img вокруг своей оси.

Если я в paintEvent пишу painter.rotate(ang); то разворот получается вокруг непонятно точки. 

Решил использовать painter.translate(*,*);, но это не рушит все.

В общем как сделать поворот? И делать может его в методе где рисую прямоугольник, но там такая же ситуация?

Автор: Moby 24.5.2010, 19:44
Извиняюсь, что поспешил с вопросом, решение нашел. 
Код

QPixmap rotatedPixmap(pixmap.size());
QPainter p(&rotatedPixmap); 
QSize size = pixmap.size();
p.translate(size.height()/2,size.height()/2);
p.rotate(90);
p.translate(-size.height()/2,-size.height()/2);
p.drawPixmap(0, 0, pixmap);


Но это не до конца решает мою задачу.

У меня в программе есть параметр - угол движения картинки.

Делая в paintEvent  p.rotate у меня решались две проблемы - поворачивалась картинка в сторону движения и банальное изменение координаты Х двигало картинку под углом. Но поворот картинки происходил не вокруг своей оси.

В общем как мне лучше сделать? 

1 - Разворачивать картинку в методе, где рисую на ней что-то.
2 - В paintEvent использовать rotate 

Но 1-ом случае надо будет как-то движение под углом реализовать, а во втором поворот вокруг центра картинки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)