QT学习笔记(十三):绘制图像


paintEvent() 事件源码添加:

#include <QPainter>
#include <QImage>
#include <QPixmap>
#include <QBitmap>
#include <QPicture>void Widget::paintEvent(QPaintEvent *)
{QPainter painter;// 绘制imageQImage image(100, 100, QImage::Format_ARGB32);painter.begin(&image);   //  设备设定painter.setPen(QPen(Qt::green, 3));painter.setBrush(Qt::yellow);painter.drawRect(10, 10, 60, 60);painter.drawText(10, 10, 60, 60, Qt::AlignCenter, tr("QImage"));painter.setBrush(QColor(0 , 0, 0, 100));painter.drawRect(50, 50, 40, 40);painter.end();// 绘制pixmapQPixmap pix(100, 100);painter.begin(&pix);painter.setPen(QPen(Qt::green, 3));painter.setBrush(Qt::yellow);painter.drawRect(10, 10, 60, 60);painter.drawText(10, 10, 60, 60, Qt::AlignCenter, tr("QPixmap"));painter.setBrush(QColor(0 , 0, 0, 100));painter.drawRect(50, 50, 40, 40);painter.end();// 绘制bitmapQBitmap bit(100, 100);painter.begin(&bit);painter.setPen(QPen(Qt::green, 3));painter.setBrush(Qt::yellow);painter.drawRect(10, 10, 60, 60);painter.drawText(10, 10, 60, 60, Qt::AlignCenter, tr("QBitmap"));painter.setBrush(QColor(0 , 0, 0, 100));painter.drawRect(50, 50, 40, 40);painter.end();// 绘制pictureQPicture picture;painter.begin(&picture);painter.setPen(QPen(Qt::green, 3));painter.setBrush(Qt::yellow);painter.drawRect(10, 10, 60, 60);painter.drawText(10, 10, 60, 60, Qt::AlignCenter, tr("QPicture"));painter.setBrush(QColor(0 , 0, 0, 100));painter.drawRect(50, 50, 40, 40);painter.end();// 在widget部件上进行绘制painter.begin(this);painter.drawImage(50, 20, image);painter.drawPixmap(200, 20, pix); painter.drawPixmap(50, 170, bit);     // 只有黑白两色,只显示轮廓painter.drawPicture(200, 170, picture);}

结果

1.QImage 类


#include <QImage>void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);QImage image;// 加载一张图片image.load("../mydrawing/image.png");// 输出图片的一些信息qDebug() << image.size() << image.format() << image.depth();// 在界面上绘制图片painter.drawImage(QPoint(10, 10), image);// 获取镜像图片(垂直镜像图片)QImage mirror = image.mirrored(false,true);// 将图片进行扭曲QTransform transform;transform.shear(0.2, 0);QImage image2 = mirror.transformed(transform);painter.drawImage(QPoint(10, 160), image2);// 将镜像图片保存到文件image2.save("../mydrawing/mirror.png");
}

结果:

1.QPixmap 类

#include <QPixmap>
#include <QDesktopWidget>
#include <QWindow>
#include <QSCreen>
#include <QLabel>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);QWindow window;// 截取屏幕上 (0,0,500,500) 矩形范围图像QPixmap grab =  window.screen()->grabWindow(QApplication::desktop()->winId(),0,0,500,500);// 储存图片grab.save("../mydrawing/screen.png");// 创建 labelQLabel *label = new QLabel(this);label->resize(400, 200);// 缩放 pix(保证长宽比,平滑转换)QPixmap pix = grab.scaled(label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);//  添加图片label->setPixmap(pix);label->move(0, 50);
}

结果:


void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);QPixmap pix;// 加载图片pix.load("../mydrawing/yafeilinux.png");// 绘制图片,添加不同透明颜色矩形覆盖图形painter.drawPixmap(0, 0, pix.width(), pix.height(), pix);painter.setBrush(QColor(255, 255, 255, 100));painter.drawRect(0, 0, pix.width(), pix.height());// 绘制图片,添加不同透明颜色矩形覆盖图形painter.drawPixmap(100, 0, pix.width(), pix.height(), pix);painter.setBrush(QColor(0, 0, 255, 100));painter.drawRect(100, 0, pix.width(), pix.height());
}

结果:

3.QPicture 类

#include <QPicture>QPicture picture;
QPainter painter;
painter.begin(&picture);
painter.setPen(QPen(Qt::green, 3));
painter.setBrush(Qt::yellow);
painter.drawEllipse(10,20,80,70);
painter.end();
painter.begin(this);
painter.drawPicture(0, 0, picture);// 将 drawing.pic 绘图命令序列化到 I/O 设备中
picture.save("../mydrawing/drawing.pic");// 读取并重演 drawing.pic 绘图命令
QPicture picture2;
picture2.load("../mydrawing/drawing.pic");
painter.begin(this);
painter.drawPicture(100,0,picture2);

结果:

QT学习笔记(十三):绘制图像相关推荐

  1. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  2. Qt学习笔记之数据库

    一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...

  3. Qt学习笔记之国际化

    国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程. 1. 相关的Qt类和AP ...

  4. Qt 学习笔记(5)绘图 五子棋游戏

    在上一篇博客C++ Qt学习笔记(4)绘图中介绍了Qt中的绘图方法,基于上一篇的博客的知识,使用QPainter设计一个五子棋的棋盘,后续会完成五子棋的游戏设计. 1. 棋盘的设计 首先需要绘制棋盘的 ...

  5. Adobe Illustrator学习笔记一 – 绘制K33图

    Adobe Illustrator学习笔记一 – 绘制图论中的K33图 作者: kagula 时间 2020-11-14 概要        阅读对象为非美工专业的计算机程序员, 所以对程序员来说显而 ...

  6. OpenGL学习笔记(十三):将纹理贴图应用到四边形上,对VAO/VBO/EBO/纹理/着色器的使用方式进行总结

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7919 ...

  7. Qt学习笔记,Qt国际化

    Qt学习笔记,Qt国际化 Qt国际化步骤: 第一步:设置.pro文件,加入TRANSLATIONS为国际化做准备 TRANSLATIONS = language/language_en.ts\     ...

  8. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  9. opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版

    基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...

最新文章

  1. AAAI 2020 开源论文 | 语义感知BERT(SemBERT)
  2. 【10月17日】2020年十月蓝桥杯A组题目【感想与总结】(热乎的)
  3. js 中英文字符串长度
  4. 软件构造 第一章第二节 软件开发的质量属性
  5. 文件打开特别慢_“Origin进不去、下载慢”的解决办法合集
  6. 基于MSBuild的xnb资源预生成机制
  7. 程序员面试金典——18.9实时中位数
  8. MigrationSchemaMissing: Unableto createthe django_migrations
  9. React躬行记(8)——样式
  10. java最简单的打印日历表_java实现打印日历
  11. nowcoder16638 carpet
  12. 空降的技术管理者应该如何开展工作?
  13. MySQL登录时出现的Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES) 的解决办法
  14. 你好 同样在努力的陌生人
  15. 【养生保健】之日常护理
  16. “咱们吃鸡吧”的背后
  17. 从5毛到3块,涪陵榨菜是怎样让我们吃不起的?
  18. 禁用Win10截屏快捷键Win+Shift+S,改用Snipaste
  19. 红外线 电磁波频谱
  20. php tts,给博客添加TTS语音朗读 简单快速版

热门文章

  1. php 函数封装上传,PHP(多)文件上传实现和函数封装
  2. 全栈深度学习第1期:如何启动一个机器学习项目?
  3. 互联网企业安全之端口监控
  4. Cognitive Inference:认知推理下的常识知识库资源、常识推理测试评估与中文实践项目索引
  5. 【推荐系统算法学习笔记1】基本架构、专有名词、构建流程
  6. 论文阅读课5-DocRED: A Large-Scale Document-Level Relation Extraction Dataset(大规模文档集关系提取数据集
  7. JS高级学习笔记(6)- 事件循环
  8. 849. 到最近的人的最大距离
  9. python数据图形化—— matplotlib 基础应用
  10. Linux磁盘及文件系统(二)Linux下磁盘命名和分区