图像处理QPixmap、Picture、QBitmap

article/2025/10/21 8:19:55

QPixmap 类是一种可用作绘制设备的屏幕外图像表示形式。

QPixmap可以使用QLabel或QAbstractButton的子类之一可以轻松显示在屏幕上

QPixmap 对象可以按值传递,因为 QPixmap 类使用隐式数据共享,也可以流式传输。

QPixmap可以和QImage之间进行转换:

  • QPixmap 转  QImage     使用 toImage函数
  • QImage   转  QPixmap   使用QPainter::fromImage

构造函数:

 常用函数:

size()图像大小
width()宽度
height()高度
toImage()转换为QImage
setDevicePixeRatio()设置像素映射的设备像素比率
scroll()滚动矩阵
scaled()对图像进行缩放
load()打开文件
save()保存文件
fill()填充
depth()图像深度
setMask()使用

QPximap在label中的使用:(其他按键控件也可使用)

    QLabel *label=new QLabel(this);label->resize(303,303);//设置大小QPixmap pixmap(":/image/456.png");pixmap.scaled(label->width(),label->height());label->setPixmap(pixmap);

QPixmap可以和QImage之间的转换

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);QImage image("D:/456.png");image.setDevicePixelRatio(3);painter.drawImage(0,0,image);QPixmap pixmap=QPixmap::fromImage(image);//QImage转QPixmappainter.drawPixmap(100,100,pixmap);painter.drawImage(200,200,pixmap.toImage());//QPixmap转QImage
}

QPixmap的一些函数使用:

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);QPixmap pixmap("D:/456.png");qDebug()<<pixmap.size();//图片大小qDebug()<<pixmap.width();//图片宽度qDebug()<<pixmap.height();//图片高度qDebug()<<pixmap.depth();//图片深度pixmap.scaled(400,400);//缩放pixmap.fill(Qt::gray);//设置填充painter.drawPixmap(0,0,pixmap);
}

setMask的使用:遮罩

实现不规则窗体,鼠标右键窗体关闭窗口,左键长按可以拖动窗口

widget.h文件添加:

protected:void paintEvent(QPaintEvent *event);//画家事件void mousePressEvent(QMouseEvent *event);//鼠标点击事件void mouseMoveEvent(QMouseEvent *event);//鼠标移动事件QPoint point;//点位

widget.cpp中实现:

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);QPixmap pixmap(":/image/456.png",0,Qt::AvoidDither|Qt::ThresholdDither|Qt::ThresholdAlphaDither);this->setMask(pixmap.mask());//需要添加头文件#include<QBitmap>
}
void Widget::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::RightButton)//右键点击  关闭窗口{close();}point=event->globalPos()-frameGeometry().topLeft();//获取差值event->accept();
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{if(event->buttons()&Qt::LeftButton){move(event->globalPos()-point);event->accept();}}

QPixmap绘制图像:

QPixmap的底色默认为黑色,可以自己使用fill()添加底色。

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter;QPixmap pixmap(200,200);//设置图片大小painter.begin(&pixmap);//给pixmap绘制painter.setPen(Qt::red);painter.setBrush(Qt::cyan);painter.drawRect(0,0,100,100);painter.drawEllipse(100,100,100,100);painter.end();painter.begin(this);painter.drawPixmap(100,100,pixmap);}

 QPicture

QPicture 类是一种绘制设备,用于记录和重播QPainter命令。QPicture与分辨率无关,即QPicture可以显示在不同的设备上

 QPicture绘制图形:

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter;QPicture picture;painter.begin(&picture);painter.drawRect(0,0,100,100);painter.drawEllipse(100,100,100,100);painter.end();painter.begin(this);painter.drawPicture(0,0,picture);}

 重播图片:

注意重播只能使用.pic文件

 先绘制一个图形,保存为.pic文件

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter;QPicture picture;painter.begin(&picture);painter.drawEllipse(100,100,100,100);painter.end();picture.save("D:/picture.pic");painter.begin(this);painter.drawPicture(0,0,picture);  
}

然后进行重播

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter;QPicture picture;picture.load("D:/picture.pic");painter.begin(this);painter.drawPicture(0,0,picture);
}

QBitmap

QBitmap 类是一种单色屏幕外绘画设备,主要用于创建自定义QCursor和QBrush对象、构造QRegion对象以及为像素图和小部件设置蒙版。

QBitmap绘制图形:

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter;QBitmap bitmap(200,200);painter.begin(&bitmap);painter.setBrush(Qt::cyan);painter.drawRect(0,0,100,100);painter.end();painter.begin(this);painter.drawPixmap(0,0,bitmap);
}

 


http://chatgpt.dhexx.cn/article/9MnTyOSF.shtml

相关文章

基于Qt的QPixmap和Qimage实现无锯齿圆角图片设置

简述 开发环境&#xff1a;Window10&#xff0c;Qt 5.9.9 &#xff0c;mingw32 近期做的用来展示图片的软件&#xff0c;涉及到使用QLabel控件和QPixmap类来显示圆角图片。 查了一些资料&#xff0c;发现实现的基本步骤是&#xff1a; 1.读取图片。通过Qt中的QImage或Qpixmap…

PyQt5组件之QPixmap

QPixmap简介 QPixmap类用于绘图设备的图像显示&#xff0c;它可以作为一个QPainterDevice对象&#xff0c;也可以加载到一个控件中&#xff0c;通常是标签或者按钮&#xff0c;用于在标签或按钮上显示图像QPixmap可以读取的图像文件类型有BMP&#xff0c;GIF&#xff0c;JPG等…

QPixmap

一、描述 Qt 提供了四个用于处理图像数据的类&#xff1a; QImage 是为 I/O 以及直接像素访问和操作而设计和优化的。QPixmap 是为在屏幕上显示图像而设计和优化的。QBitmap是一个继承QPixmap的便利类&#xff0c;保证深度为1。如果QPixmap对象确实是位图&#xff0c;isQBitm…

【全奖博士】香港大学招收计算机视觉方向博士/博后/研究助理

来源&#xff1a;AI求职 香港大学 香港大学 (The University of Hong Kong)&#xff0c;简称港大 (HKU)&#xff0c;是一所国际化公立研究型大学&#xff0c;位于香港岛中西区&#xff0c;成立于 1911 年。在最新 QS 世界排名和泰晤士世界排名中&#xff0c;分别位列第 21 位和…

为什么有的计算机本科生就能发表顶会,但是许多博士生还是一篇都没有?

我知道知乎有很多大神本科生&#xff0c;也有很多普通的博士生。希望本科大佬不要看不起那些平庸博士&#xff0c;博士生也不要嫉妒本科大佬。大家尽量客观的分析问题。 本科生还有很多时间要上课&#xff0c;博士生全天科研而且有4,5年的时间。虽然能发顶会的本科生肯定是非常…

计算机专业博士阶段研究方向,国内计算机专业博士研究方向

国内计算机专业博士研究方向 国内计算机专业博士研究方向 学校名称 专业 研究方向 复旦大学 081202 计算机软件与理论 01数据库与知识库 02数字图书馆 03数据挖掘 04电子商务 05软件工程 06Web数据管理与数据挖掘 07对等(P2P) 计算技术 08流数据分析与管理 09智能信息处理 10算…

怎么学好数据结构?北大计算机博士亲授。

首先明确一下&#xff0c;为什么要学好数据结构&#xff1f;如果你是一位职场人士&#xff0c;那你肯定知道&#xff0c;工作中要用到数据结构的时候少之又少&#xff0c;所以很少会有职场人特意来学好数据结构。但是据我观察&#xff0c;这依然是有必要的。而且很多公司包括一…

计算机相关专业提升学历的解决方案(博士研究生)

文章目录 1、正规全日制博士1.1 申请 - 考核制1.2 硕博连读与直博 2、继续教育&#xff08;非全日制&#xff09;2.1 在职博士2.2 同等学力申博 3、海外博士3.1 海外博士3.2 中外合作博士 博士录取政策 国内博士&#xff0c;没有具体的政策&#xff0c;招生权力下放到各个高校。…

博士申请 | 香港大学计算机科学系黄超老师招收2022年入学全奖博士生

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 香港大学 黄超老师将于 2021 年秋季加入香港大学&#xff08;University of Hong Kong-HKU&…

博士申请 | 加拿大阿尔伯塔大学韩杰教授招收电子与计算机专业博士/博后

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 阿尔伯塔大学 阿尔伯塔大学&#xff08;University of Alberta&#xff09;&#xff0c;始建…

我为什么鼓励你读计算机领域的博士?

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达本文转自 | 科研大叔 看过《水浒传》的朋友都知道&#xff0c;梁山的一百单八将因为各种理由加入了水寨&#xff0c;走上了劫富济贫、替天行道的路。我2006年从南京大学本…

博士申请 | 香港城市大学计算机学院徐伟涛老师组招收人工智能全奖博士生

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 香港城市大学 香港城市大学是一所坐落于香港九龙塘的公立研究型大学。2023 年 QS 世界大学排…

博士申请 | 澳门大学张一博教授课题组招收计算机视觉方向全奖博士生

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 澳门大学 澳门大学新校区位于美丽的珠海横琴岛&#xff0c;是澳门唯一的公立综合性大学&…

2022年中山大学计算机学院计算机考博申博博士经验分享

2022年中山大学计算机学院计算机考博申博博士经验分享 自己考博时候&#xff0c;得到了中山大学师兄的帮助&#xff0c;感觉非常感激&#xff0c;因此博士考完之后&#xff0c;我想将自己的考博经验与大家分享&#xff0c;中间或许有些问题记得不太清楚&#xff0c;各位同学朋…

博士申请 | 美国佛罗里达州立大学计算机系王广老师招收人工智能全奖博士生...

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 佛罗里达州立大学 佛罗里达州立大学&#xff08;Florida State University&#xff09;&…

交大博士学长:研究生计算机专业的方向选择!

Datawhale干货 作者&#xff1a;一辈闲&#xff0c;上海交大博士&#xff0c;Datawhale邀约作者 作者知乎&#xff1a;https://www.zhihu.com/people/yi-bei-xian-16 目前计算机专业的研究方向主要分为四个大方向分别是&#xff1a;AI&#xff08;人工智能&#xff09;、Syste…

【学术相关】交大博士学长:研究生计算机专业的方向选择!

Datawhale干货 作者&#xff1a;一辈闲&#xff0c;上海交大博士&#xff0c;Datawhale邀约作者 作者知乎&#xff1a;https://www.zhihu.com/people/yi-bei-xian-16 目前计算机专业的研究方向主要分为四个大方向分别是&#xff1a;AI&#xff08;人工智能&#xff09;、Syste…

计算机专业要不要读博?(转)

看过《水浒传》的朋友都知道&#xff0c;梁山的一百单八将因为各种理由加入了水寨&#xff0c;走上了劫富济贫、替天行道的路。我2006年从南京大学本科毕业以后&#xff0c;耳闻目睹了数百位计算机专业的博士&#xff08;生&#xff09;&#xff0c;他们选择读博士的理由可以说…

博士申请 | 美国乔治梅森大学计算机系招收机器学习方向全奖博士生

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 乔治梅森大学 GMU位于美国首都华盛顿特区的郊区 (Fairfax, VA)。其计算机系csranking排名45…

计算机科学全奖博士招生,福特汉姆大学魏文启课题组

来源&#xff1a;机器之心 导师介绍 魏文启博士将于 2023 年 1 月加入福特汉姆大学 (Fordham University) 计算机与信息科学系&#xff0c;担任助理教授。目前他在 IBM Almaden 研究中心担任研究员。 个人主页&#xff1a;https://wenqiwei789.github.io/Homepage/ 他于 2022 年…