Qt中QBitmap 的使用 --QBitmap的作用
特别注意:如果想把做一个先把图画在内存中,在显示到页面,不要使用bitmap,这个只有单色;
一般情况下QBitmap只作为图片掩码使用,比如做不规则窗口。
QBitmap表示一种只有黑白的单色图片,类似于mfc中的位图。该类主要用于创建自定义的光标和画刷对象,以及创建区域对象和为某个空间设置掩码图片。
QBitmap派生自QPixmap类,它的颜色深读为1。当然,空的QBitmap对象的颜色深度为0。所以,如果我们将一个颜色深度大于1的图片赋值给bitmap,bitmap会自动发生抖动,将图片颜色变为黑白色。
当然,我们也可以单独创建一个QBitmap对象,然后使用Qt::color0和Qt::color1对它进行填充。其中,使用Qt::color0会将QBitmap的所有位置0,Qt::color1则会将QBitmap的所有位置1。而对一个位图来说,0代表背景(或透明像素),1代表前景(或不透明像素)。当然,我们还可以使用该类的成员函数clear()将QBitmap对象的所有位置为Qt::color0。
但要注意的是,使用Qt::black 和 Qt::white是没有意义的,因为QColor::pixel()不一定是用0表示黑色,用1表示白色的。
另外,QBitmap还提供了两个常用的静态方法。fromData()可以用一个uchar数组来构建一个QBitmap对象,所以我们可以先把一个图片使用QFile读到内存中,然后使用该方法构建出一个QBitmap对象;而另一个fromImage()则提供了将一个QImage转换成QBitmap的方法。
下面,我们写一个简单的例子,将一张图片分别以QBitmap和QPixmap的形式绘制到窗口上,来看一下它们的效果和区别。
新建一个GUI程序,将准备好的一张图片作为资源添加到工程中,然后,重写窗口类的paintEvent(QPaintEvent*)方法,进行绘图。
代码如下:
1 void Widget::paintEvent(QPaintEvent *) 2 { 3 QPainter painter(this); 4 QBitmap bitmap(":/1.png"); 5 QPixmap pixmap(":/1.png"); 6 painter.drawPixmap(0, 0, rect().width()/2, rect().height(), bitmap); 7 painter.drawPixmap(rect().width()/2, 0, rect().width()/2, rect().height(), pixmap); 8 }
转载于:https://www.cnblogs.com/gwwdq/p/9330698.html
Qt中QBitmap 的使用 --QBitmap的作用相关推荐
- Qt中exec函数的作用
Qt中的exec()方法到处可见,例如: QCoreApplicaton::exec() QApplication::exec() QDialog::exec() QThread::exec() Q ...
- Qt中不规则窗体和部件的实现
Qt中不规则窗体和部件的实现 描述:a.png 窗口背景图 图片: 描述:mask.png 窗口掩码图 图片: 描述:toolbutton.png 按钮背景图 图片: 描述:toolbutton_ma ...
- Qt中为工程添加资源文件、给按钮添加图片
Qt中为工程添加资源文件.给按钮添加图片 1.使用QIcon类.代码如下: QIcon icon;icon.addFile(tr("res/icon/wall.png"));ui- ...
- Qt中的 Size Hints 和 Size Policies
sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...
- QT 中 关键字讲解(emit,signal,slot)以及使用
Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...
- Qt中的模型视图设计模式
文章目录 1 初探Qt中的模型视图设计模式 2 模型视图中的索引 3 模型中的数据组织方式初探 1 初探Qt中的模型视图设计模式 模型视图设计模式的核心思想: 模型(数据)与视图(显示)相分离. 模型 ...
- Qt中的QLabel组件
文章目录 1 QLabel组件 1.1 QLabel简介 1.2 图片自适应 QLabel 的大小 1 QLabel组件 1.1 QLabel简介 QLabel组件: QLabel用于显示一个提示性的 ...
- 【Qt】 Qt中实时更新UI程序示例
00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 实时更新UI(非信号与槽) 04. 实时更新UI(信号与槽) 05. 源码下载 06. 附录 01. 概述 Qt在运行时会 ...
- 【Qt】Qt中信号与槽
00. 目录 文章目录 00. 目录 01. 信号与槽 02. 介绍 03. 信号与槽 04. 信号 05. 槽 06. 一个小例子 07. 一个真实的例子 08. 信号和槽使用默认参数 09. 信号 ...
- 如何在QT中读取串口数据
总是能在别人的博客中学到太多太多,谢谢各位对知识的无私共享,谢谢大家 前言 去年我使用Qt编写串口通信程序时,将自己的学习过程写成了教程(Qt编写串口通信程序全程图文讲解),但是由于时间等原因,我只实 ...
最新文章
- Chord 弦 - 一个现代音乐播放器
- 一台机器上有几个java虚拟机
- 英语笔记-20151209
- tensorflow2 tensorboard可视化使用
- ffmpeg库编译加文字_1.编译ffmpeg库
- java打印日期序列,Java GSON-日期格式
- Flink java 自定义reduce函数,以wordcount为例
- Maven-打包的时候丢失非.java的文件
- android 更新适配器,android – 当适配器数据更改时更新列表视图
- A*算法解决传教士—野人过河问题
- win7可以运行python_win7安装python开发环境,运行python
- 360校招笔试题总结1
- 如何低成本测试云原生(K8s)应用?
- 系统服务器与手机关系,手机与云服务器交互
- 2018年诺贝尔经济学奖揭晓!两位美国教授获奖
- 多人连线的枪战游戏-补充
- python学习第一讲(基本的操作)
- 电脑端epub阅读软件分享
- VM虚拟机(VMware)设置外网连接
- 6. Z 字形变换(给定字符串,画N后逐行拼接成新字符串)
热门文章
- 英特尔一口气发布了三款处理器、两款存储、一款以太网适配器
- 《团队作业第一周》五小福团队作业——UNO
- JavaScript (十九):DOM对象其它操作
- 19. Rootkit detectors (隐形工具包检测器 5个)
- CMake 入门实战 | HaHack
- C#中的线程二(Cotrol.BeginInvoke和Control.Invoke)
- 百度竞价教程 借助百度热力图让你的效果翻10倍
- 【原创】昆虫棋离线复盘工具v1.5 更新(BoardSpace.net hive games reviewer)
- Windows7磁盘检查与整理的使用
- unity 小tip