【问题标题】:How do I rotate photos in QPixmap?如何在 QPixmap 中旋转照片?
【发布时间】:2021-01-08 07:18:53
【问题描述】:

在车速表上标记了一根指针。

// 이미지 출력
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();

我想要旋转和重新定位。

我该怎么做?

【问题讨论】:

    标签: c++ qt qpixmap


    【解决方案1】:

    QPixmap你不用乱搞,你可以操纵QGraphicsScene::addPixmap返回的QGraphicsPixmapItem

    QGraphicsPixmapItem *pixmap_item = scene.addPixmap(pix);
    

    设置位置,可以使用QGraphicsItem::setPos

    要设置旋转,首先使用QGraphicsItem::setTransformOriginPoint设置变换原点,(这将设置您的项目将围绕其旋转的点)然后使用QGraphicsItem::setRotation设置旋转:

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

    您必须自己设置正确的值,但这应该会引导您走上正确的道路。

    【讨论】:

    • 谢谢,谢谢你,我解决了。但是定位,我用了“setPos”
    • 哦,是的,我的错,应该是 setPos 而不是 setPosition
    【解决方案2】:

    您可以查看QPixmap::transformed()

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

    可以通过QTransform对象给出规范:

    • rotate() 轮换
    • translate() 重新定位

    【讨论】:

      【解决方案3】:

      希望这个可以帮助:

      //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);
      

      复制自: Read this forum thread

      【讨论】:

        猜你喜欢
        • 2020-11-12
        • 1970-01-01
        • 2014-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多