Qt-QPixmap

这篇具有很好参考价值的文章主要介绍了Qt-QPixmap。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QPixmap类用于绘图设备的图像显示,它即可以作为一个绘图对象,也可以加载到一个控件中,通常是标签或按钮,用于在标签或按钮上显示图像。

QPixmap可以读取的图像文件类型有BMP、GIF、JPG、JPEG、PNG、PBM、PGM、PPM、XBM、XPM等 

QPixmap与QImage的区别:

QPixmap依赖于硬件,QImage不依赖于硬件

QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的

当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍,所以一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。QPixmap绘制效果是最好的

#include <QPixmap>

载入图像和显示

QLabel* label=new QLabel(this);
    label->move(10,10);
    label->resize(500,500);

    QPixmap pm("./ma.jpg"); //创建QPixmap对象并读取图像
    QPixmap p;    //创建QPixmap对象
    p.load("./laohu.jpg");  //载入图像
    //重复load同一图像时,容易出错,解决办法看:https://blog.csdn.net/doupi2008/article/details/44960003/


    label->setPixmap(p); //在label标签中显示图像
    label->adjustSize();

QPixmap(const QString &fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);//从指定的文件中加载图像并生成QPixmap对象

参数2:format:字符串,表示图像文件的格式,如果为0,将进行自动识别

参数3:flags:表示颜色的转换模式

    1) Qt::AutoColor:由系统自动决定。

    2) Qt::ColorOnly:彩色模式。

    3) Qt::MonoOnly:单色模式

常用操作

QLabel* label=new QLabel(this);
    label->move(10,10);
    label->resize(400,400);
    QLabel* label1=new QLabel(this);
    label1->move(450,10);
    label1->resize(400,400);

    QPixmap p("./ma.jpg");


    QRect r=QRect(150,150,300,300);
    QPixmap p1=p.copy(r);  //返回指定区域的图像
    QPixmap p2=p.copy(150,150,300,200);  //返回指定区域的图像
    p1.save("./ss.jpg");  //保存图像

    //p2.fill(QColor(0,0,255));  //用给定的颜色填充pixmap
    //默认:Qt::white

    bool b=p2.hasAlpha();  //如果此pixmap有alpha通道或有掩码,则返回true,否则返回false
    int n=p2.height();  //返回图像的高
    n=p2.width();   //返回图像的宽
    QSize s1=p2.size();//返回图像的宽高
    b=p2.isNull(); //如果这是空的pixmap,则返回true;否则返回false
    //空pixmap具有零宽度、零高度和无内容。不能在空pixmap中绘制

    QSize s(200,100);
    QPixmap p3=p2.scaled(s);//将p2缩放成指定大小,然后返回新图像

    QPixmap p4=p1.scaled(s,Qt::KeepAspectRatio);  //缩放图像
    /*
    参数2:可选
    IgnoreAspectRatio 默认 矩形框有多大,图片就缩放成多大,不限制原图片的长宽比
     KeepAspectRatio    保持原图片的长宽比,且不超过矩形框的大小
     KeepAspectRatioByExpanding   根据矩形框的大小最大缩放图片
     参数3:可选
     Qt::FastTransformation  默认  转换快速执行,没有任何平滑处理
     Qt::SmoothTransformation   使用双线性滤波对生成的图像进行转换
     */

    p4=p1.scaledToHeight(200);  //按照高度缩放
    /*
    参数2:可选
     Qt::FastTransformation  默认  转换快速执行,没有任何平滑处理
     Qt::SmoothTransformation   使用双线性滤波对生成的图像进行转换
     */

    p4=p1.scaledToWidth(200);  //按照宽度缩放
    /*
    参数2:可选
     Qt::FastTransformation  默认  转换快速执行,没有任何平滑处理
     Qt::SmoothTransformation   使用双线性滤波对生成的图像进行转换
     */

    QImage im=p1.toImage();  //将QPixmap对象转换为QImage对象
    //fromImage()   将QImage对象转换为QPixmap对象

    QTransform tf;  //坐标变换
    tf.rotate(30.5,Qt::YAxis);
    //参数1:旋转角度
    //参数2:旋转轴   Qt::XAxis    Qt::YAxis   Qt::ZAxis默认

    QPixmap p5=p4.transformed(tf,Qt::FastTransformation); //返回旋转后的图像
    /*
参数1:旋转角度  正数:顺时针     负数:逆时针
参数2:Qt::FastTransformation  默认  变换执行迅速,无需平滑
    Qt::SmoothTransfor               利用双线性滤波对得到的图像进行变换
    */


    qDebug()<<s1;
    label->setPixmap(p1); //在label标签中显示图像
    label->adjustSize();
    label1->setPixmap(p5);
    label1->adjustSize();

作为绘图设备

QLabel* label=new QLabel(this);
    label->move(10,10);
    label->resize(400,400);
    QPixmap p(300,300); //创建QPixmap空白图像对象
    //参数:图像大小
    QPainter painter(&p); //创建画家
    //参数:绘图设备
    painter.fillRect(100,100,100,50,Qt::blue);//在pix上绘制正方形


    label->setPixmap(p); //在label标签中显示图像
    label->adjustSize();

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓文章来源地址https://www.toymoban.com/news/detail-444704.html

到了这里,关于Qt-QPixmap的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源绘图工具plantUML入门教程(常用于画类图、时序图等)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 随着工作时间的增长,越发觉得用专业的图形(用例图,时序图,ER图等等)去准确表达想法是很重要的。比如针

    2024年02月05日
    浏览(41)
  • 深度学习目标检测模型常用于部署在边缘计算设备上,常用于部署的边缘计算设备有哪些。

    问题描述:深度学习目标检测模型常用于部署在边缘计算设备上,常用于部署的边缘计算设备有哪些。 问题解答: 在边缘计算设备上部署深度学习目标检测模型通常需要考虑设备的计算能力、内存、功耗等因素。以下是一些常用于部署深度学习目标检测模型的边缘计算设备

    2024年02月02日
    浏览(46)
  • 开源绘图工具 PlantUML 入门教程(常用于画类图、用例图、时序图等)

    一、类图 类的UML图示 定义能见度(可访问性) 类之间的关系 例子1: 或者 例子2: 或者 二、用例图 三、时序图 例子1: 例子2: 参考资料 官网: PlantUML - 类图 PlantUML - 用例图 PlantUML - 序列图 博客:https://blog.csdn.net/pleaseprintf/article/details/130656001

    2024年03月17日
    浏览(42)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

            绘图与图表在嵌入式里有的比较多,尤其是图表,我们常在股票里看到的“图表折线/曲线 图/饼状图等”都可以用 Qt 的图表来实现。绘图和图表的内容本章主要介绍绘图和图表的基本操作,以简单的例子呈现绘图与图表的用法,目的就是快速入门绘图与图表,关

    2024年02月12日
    浏览(48)
  • QT qt 3d 绘图

    首先不得不说,要感谢北京邮电大学的阿科。感谢他慷慨的分享和极具科学态度的记录,将自己搜集到的众多资料收集整理发布,拯救众多苦逼寻找方案的程序员于苦海之中。因为最近接手新的项目,涉及到使用opengl做surface plot编程。第一个想到的就是能否使用现有的开源

    2024年02月02日
    浏览(39)
  • QT窗体绘图QPainter

    QPainter INSCODE AI 创作助手: QPainter是Qt中的一个类,用于在窗口、图像或其他用户界面上绘制图形和文本。它提供了一些方便的方法来画线、矩形、圆、多边形和文本 QPainter绘图函数 INSCODE AI 创作助手: QPainter是Qt中一个用于绘图的类,它提供了一系列的绘图函数。以下是一些

    2024年02月05日
    浏览(39)
  • QT—3D绘图

    OpenGL是一个跨平台的、用来渲染3D图形的标准API,Qt对OpenGL提供了强大的支持。Qt4时代的QtOpenGL模块在Qt5中已经不再建议使用,OpenGL相关的类被移到了Qt GUI模块。Qt Widgets模块中的QOpenGLWidget类提供了一个可以渲染OpenGL图形的部件,通过该部件可以轻松地将OpenGL图形整合到Qt应用程序

    2023年04月08日
    浏览(35)
  • QT--Opencv绘图

    提示:本文为学习内容,若有错误,请联系作者,谦虚受教。 只要来日可期,今天就值得欣喜。 img:您要绘制形状的图像 color:形状的颜色。对于BGR,将其作为元组传递,例如:(255,0,0)对于蓝色。对于灰度, 只需传递标量值即可。 厚度:线或圆等的粗细。如果对闭合图形(

    2024年02月13日
    浏览(41)
  • Qt高级绘图

    在这篇文章中,我们将会介绍Qt中的高级绘制技术,并了解如何使用它们来实现自定义的绘制和渲染。Qt提供了一些专业级别的API来进行绘图操作,可以创建矢量图形或者像素颜色(bitmap)图形。 Qt中最常用的绘制API是QPainter类。它可以用于将几何形状、图像和文本等内容绘制

    2024年02月15日
    浏览(38)
  • (14)Qt绘图(one)

    目录 绘图的基本使用 绘图的流程 指定绘图设备的两种方式 QPen的使用 线条样式 笔帽样式 线条连接样式 QBrush的使用 画刷样式设置 Qt中的随机数的使用 填充规则 纹理填充(图片填充) 渐变填充 线性渐变 径向渐变 锥形渐变 渐变区域之外的渐变样式(以线性渐变为例) 预定

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包