2013-02-14 4 views
1

Я пытаюсь нарисовать повернутое изображение на существующем художнике. Вращение, а также местоположение будут отличаться каждый раз. Вращение отлично работает, но я не могу предсказать местоположение. Странно то, что он работает по-другому, если я рисую текст вместо изображения.Qpainter drawimage unpredicatable location with rotation

Текст, как представляется, рисуется с ЛЕВОЙ БОТТОМ, начиная с «точки», в то время как изображение начинается с ВЛЕВОГО ТОП в точке «точка». Но затем после поворота я не понимаю, что происходит с изображением ....

Пример:

QPoint point = QPoint(80, 200); 
painter->rotate(45); 

painter->drawImage(point, QImage("/srv/....")); // i can't predict where this goes 
painter->drawText(point, "Rotated text");  // but I can predict exactly where this goes! 

Я думаю, что, может быть, мне нужно использовать перевод (х, у) в случае Я использую drawImage, но я в недоумении, какие х и у мне нужно использовать в зависимости от поворота и почему он отлично работает с drawText.

ответ

2

Любой, кто читает - у меня была другая утечка головного мозга ... Я должен был сначала перевести систему координат туда, где я хотел, чтобы изображение закончилось, затем поверните, а затем нарисуйте изображение на 0,0 ...

код становится:

painter->translate(80,200); // this will be our point of origin 
painter->rotate(45);   // now do the rotation at this point 

painter->drawImage(0,0,QImage("/srv/....")); // since we're already at our point enter 0,0 
0

для преобразования вам нужно сделать, как показано ниже, например:

painter->translate(m_bound.width()/2.0,m_bound.height()/2.0); 
painter->rotate(m_angle); 
painter->translate(-m_bound.width()/2.0,-m_bound.height()/2.0); 
//.... Paint what you want as normal ....// 

Это просто переводится в верхний левый, затем поворачивается и, наконец, переводит обратно в исходное положение.
Пожалуйста, обратите внимание, что эти преобразования матрицы таким образом, влияющие на обратное (line1: перевести назад, line2: поворот, line3: перевести на левый верхний)

Смежные вопросы