【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)

目录

0.简介

1.详细代码及解释

1)原label显示在界面上

2)水平翻转

3)垂直翻转

4)顺时针旋转45度

5)逆时针旋转


0.简介

环境:windows11 + QtCreator

背景:demo,父类为QWidget,界面上有一个label,label中有一个QImage图片,本文主要介绍将QImage图片进行水平翻转、垂直翻转、顺时针旋转和逆时针旋转,详见下文

1.详细代码及解释

1)原label显示在界面上

我的图片只是随便起了个名字【bird.jpg】,事先放在了资源文件中

以下主要代码是在【mainwindows.cpp】类中实现的

    QImage image(":/bird.jpg");
    QLabel *lb = new QLabel(this);
    lb->setFixedSize(500,500);
    lb->setPixmap(QPixmap::fromImage(image));
    lb->show();

2)水平翻转

//水平翻转
QImage horFilp(const QImage &image){
    QImage horFilp = image.mirrored(true,false);
    return horFilp;
}
    QImage image(":/bird.jpg");
    QImage horFilpImage = horFilp(image);//调用水平翻转
    QLabel *lb = new QLabel(this);
    lb->setFixedSize(500,500);
    lb->setPixmap(QPixmap::fromImage(horFilpImage));
    lb->show();

以上代码结构在实际项目中的位置如下图:

3)垂直翻转

//垂直翻转
QImage verFilp(const QImage &image){
    QImage verFilp = image.mirrored(false, true);
    return verFilp;
}
    QImage image(":/bird.jpg");
    QImage verFilpImage = verFilp(image);//调用垂直翻转
    QLabel *lb = new QLabel(this);
    lb->setFixedSize(500,500);
    lb->setPixmap(QPixmap::fromImage(verFilpImage));
    lb->show();

以上代码结构在实际项目中的位置如下图:

4)顺时针旋转45度

//旋转
QImage rotateImageDegrees(const QImage &image, const int &degrees){
    QTransform trans;
    trans.rotate(degrees);
    QImage rotatedImage = image.transformed(trans, Qt::SmoothTransformation);
    return rotatedImage;
}
    QImage image(":/bird.jpg");
    QImage rotatedImage = rotateImageDegrees(image, 45);//顺时针旋转
    QLabel *lb = new QLabel(this);
    lb->setFixedSize(500,500);
    lb->setPixmap(QPixmap::fromImage(rotatedImage));
    lb->show();

以上代码结构在实际项目中的位置如下图:

5)逆时针旋转

同顺时针,调用的是同一个函数,只不过在调用的时候,需要将参数设置为负

如顺时针是45,逆时针则为-45

QImage rotatedImage = rotateImageDegrees(image, 45);//顺时针旋转
QImage rotatedImage = rotateImageDegrees(image, -45);//逆时针旋转

--END--

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Wyn_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值