QT图片旋转和图片翻转

本文介绍了在QT中如何进行图片的旋转和翻转操作。使用QPixmap的leftmatrix类可以方便地旋转图片,而QPainter类则支持自定义旋转中心。对于图片的翻转,提供了水平和垂直翻转的示例代码。此外,还展示了顺时针和逆时针旋转图片的方法。
摘要由CSDN通过智能技术生成

常见变换简介在这里插入图片描述

QT图片旋转

1.使用QPixmap的leftmatrix类,默认以图片中心为旋转点, 旋转指定角度

QMatrix leftmatrix;
 leftmatrix.rotate(180);
 
QLabel *pLabel= new QLabel();
pLabel->setPixmap(QPixmap(:/images/img.png”).transformed(leftmatrix,Qt::SmoothTransformation));

2.使用QPainter类

void Dialog::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QPixmap pix;
pix.load("images/img.png");
painter.translate(50,50); //让图片的中心作为旋转的中心
    painter.rotate(90); //顺时针旋转90度
    painter.translate(-50,-50); //使原点复原
    painter.drawPixmap(0,0,100,100,pix);
}

QT图片翻转

水平翻转
void ImageViewer::horFilp()
{
    image = image.mirrored(true, false);
    imageLabel->setPixmap(QPixmap::fromImage(image));
}
垂直翻转
void ImageViewer::verFilp()
{
    image = image.mirrored(false, true);
    imageLabel->setPixmap(QPixmap::fromImage(image));
}
顺时针旋转
void ImageViewer::clockwise()
{
    QMatrix matrix;
    matrix.rotate(90.0);
    image = image.transformed(matrix,Qt::FastTransformation);
    imageLabel->setPixmap(QPixmap::fromImage(image));
}
逆时针旋转
void ImageViewer::anticlockwise()
{
    QMatrix matrix;
    matrix.rotate(-90.0);
    image = image.transformed(matrix,Qt::FastTransformation);
    imageLabel->setPixmap(QPixmap::fromImage(image));
}
Qt实现图片的立体旋转,可以使用QGraphicsPixmapItem类来实现。具体步骤如下: 1. 创建一个QGraphicsScene对象和一个QGraphicsView对象,并将它们关联起来。 2. 加载图片并创建一个QGraphicsPixmapItem对象。 3. 设置QGraphicsPixmapItem对象的旋转中心和旋转角度。 4. 将QGraphicsPixmapItem对象添加到QGraphicsScene对象中。 5. 将QGraphicsScene对象设置为QGraphicsView对象的场景,并显示QGraphicsView对象。 下面是一个简单的示例代码,实现图片的立体旋转: ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建场景和视图 QGraphicsScene scene; QGraphicsView view(&scene); // 加载图片 QPixmap pixmap(":/images/image.jpg"); // 创建图片项 QGraphicsPixmapItem pixmapItem(pixmap); // 设置图片项的中心点和旋转角度 pixmapItem.setTransformOriginPoint(pixmap.width() / 2, pixmap.height() / 2); pixmapItem.setRotation(45.0); // 将图片项添加到场景中 scene.addItem(&pixmapItem); // 显示视图 view.show(); return app.exec(); } ``` 在上面的代码中,我们加载了一张图片,并在其中创建了一个QGraphicsPixmapItem对象。然后,我们设置了该对象的中心点和旋转角度,并将该对象添加到了场景中。最后,我们将场景设置为视图的场景,并显示视图。 当我们运行这个程序时,就可以看到图片在场景中立体旋转的效果。 注意:如果需要实现更加复杂的立体旋转效果,可以考虑使用QGraphicsRotation类和QGraphicsTransform类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的小熊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值