KimJitae
KimJitae

Reputation: 263

How do I rotate photos in QPixmap?

enter image description here

enter image description here

Marked a needle on the speedometer.

// 이미지 출력
QPixmap pix("C:\\Users\\WORK002\\Desktop\\speedmeter.png");
QPixmap pix2("C:\\Users\\WORK002\\Desktop\\pointer.png");
QPixmap pointer = pix2.scaled(300, 300);


scene.addPixmap(pix);
scene.addPixmap(pointer);
ui-> graphicsView ->setScene(&scene);
ui-> graphicsView ->show();

enter image description here

I want rotate and reposition.

How can i do this?

Upvotes: 2

Views: 1063

Answers (3)

thuga
thuga

Reputation: 12901

You don't have to mess with the QPixmap, you can manipulate the QGraphicsPixmapItem returned by QGraphicsScene::addPixmap:

QGraphicsPixmapItem *pixmap_item = scene.addPixmap(pix);

To set the position, you can use QGraphicsItem::setPos.

To set the rotation, first set the transform origin point with QGraphicsItem::setTransformOriginPoint,(this will set the point around which your item will be rotated) and then set the rotation with QGraphicsItem::setRotation:

pixmap_item->setPos(50, 0);
pixmap_item->setTransformOriginPoint(pixmap_item->boundingRect().center());
pixmap_item->setRotation(90);

You will have to set the correct values yourself, but this should lead you in the right way.

Upvotes: 3

TheNoir
TheNoir

Reputation: 208

may this one can help:

//Please note this method takes 2 mseg to finish for a 20x20 pixmap.
QPixmap rotatedPixmap(m_pixOriginal.size());
rotatedPixmap.fill(QColor::fromRgb(0, 0, 0, 0)); //the new pixmap must be transparent.

QPainter* p = new QPainter(&rotatedPixmap);
QSize size = m_pxOriginal.size();
p->translate(size.height()/2,size.height()/2);
p->rotate(m_iAngle);
p->translate(-size.height()/2,-size.height()/2);
p->drawPixmap(0, 0, m_pxOriginal);
p->end();
delete p;
m_pxItem->setPixmap(rotatedPixmap);

copied from: Read this forum thread

Upvotes: 3

Minh
Minh

Reputation: 1725

You can look into QPixmap::transformed()

QPixmap QPixmap::transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const

The specification can be given through the QTransform object:

  • rotate() for rotation
  • translate() for reposition

Upvotes: 3

Related Questions