【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--

相关推荐

  1. flutter 逆时针旋转图片铺满比例区域

    2024-07-20 00:10:02       56 阅读
  2. OpenCV图像翻转旋转

    2024-07-20 00:10:02       34 阅读
  3. css时针旋转90°再3D绕Y轴旋转180°

    2024-07-20 00:10:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 00:10:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 00:10:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 00:10:02       45 阅读
  4. Python语言-面向对象

    2024-07-20 00:10:02       55 阅读

热门阅读

  1. QtService实现后台服务linux,windows

    2024-07-20 00:10:02       16 阅读
  2. wpf 启动文件的设置

    2024-07-20 00:10:02       15 阅读
  3. WPF中MVVM常用的框架

    2024-07-20 00:10:02       16 阅读
  4. 代码随想录算法训练营第三十四天

    2024-07-20 00:10:02       17 阅读
  5. ES6 数值的扩展(十八)

    2024-07-20 00:10:02       12 阅读
  6. 从零开始学习嵌入式----数据结构之链表

    2024-07-20 00:10:02       19 阅读
  7. Nestjs后台服务

    2024-07-20 00:10:02       16 阅读
  8. 昇思MindSpore 应用学习-ResNet50迁移学习-CSDN

    2024-07-20 00:10:02       18 阅读
  9. GitHub每日最火火火项目(7.19)

    2024-07-20 00:10:02       18 阅读
  10. bug-前端解决node-sass和sass-loader兼容问题

    2024-07-20 00:10:02       15 阅读
  11. 设计模式七大原则(七)合成复用原则

    2024-07-20 00:10:02       12 阅读