特别注意:如果想把做一个先把图画在内存中,在显示到页面,不要使用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的作用相关推荐

  1. Qt中exec函数的作用

    Qt中的exec()方法到处可见,例如: QCoreApplicaton::exec()  QApplication::exec() QDialog::exec() QThread::exec() Q ...

  2. Qt中不规则窗体和部件的实现

    Qt中不规则窗体和部件的实现 描述:a.png 窗口背景图 图片: 描述:mask.png 窗口掩码图 图片: 描述:toolbutton.png 按钮背景图 图片: 描述:toolbutton_ma ...

  3. Qt中为工程添加资源文件、给按钮添加图片

    Qt中为工程添加资源文件.给按钮添加图片 1.使用QIcon类.代码如下: QIcon icon;icon.addFile(tr("res/icon/wall.png"));ui- ...

  4. Qt中的 Size Hints 和 Size Policies

    sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...

  5. QT 中 关键字讲解(emit,signal,slot)以及使用

    Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...

  6. Qt中的模型视图设计模式

    文章目录 1 初探Qt中的模型视图设计模式 2 模型视图中的索引 3 模型中的数据组织方式初探 1 初探Qt中的模型视图设计模式 模型视图设计模式的核心思想: 模型(数据)与视图(显示)相分离. 模型 ...

  7. Qt中的QLabel组件

    文章目录 1 QLabel组件 1.1 QLabel简介 1.2 图片自适应 QLabel 的大小 1 QLabel组件 1.1 QLabel简介 QLabel组件: QLabel用于显示一个提示性的 ...

  8. 【Qt】 Qt中实时更新UI程序示例

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 实时更新UI(非信号与槽) 04. 实时更新UI(信号与槽) 05. 源码下载 06. 附录 01. 概述 Qt在运行时会 ...

  9. 【Qt】Qt中信号与槽

    00. 目录 文章目录 00. 目录 01. 信号与槽 02. 介绍 03. 信号与槽 04. 信号 05. 槽 06. 一个小例子 07. 一个真实的例子 08. 信号和槽使用默认参数 09. 信号 ...

  10. 如何在QT中读取串口数据

    总是能在别人的博客中学到太多太多,谢谢各位对知识的无私共享,谢谢大家 前言 去年我使用Qt编写串口通信程序时,将自己的学习过程写成了教程(Qt编写串口通信程序全程图文讲解),但是由于时间等原因,我只实 ...

最新文章

  1. Chord 弦 - 一个现代音乐播放器
  2. 一台机器上有几个java虚拟机
  3. 英语笔记-20151209
  4. tensorflow2 tensorboard可视化使用
  5. ffmpeg库编译加文字_1.编译ffmpeg库
  6. java打印日期序列,Java GSON-日期格式
  7. Flink java 自定义reduce函数,以wordcount为例
  8. Maven-打包的时候丢失非.java的文件
  9. android 更新适配器,android – 当适配器数据更改时更新列表视图
  10. A*算法解决传教士—野人过河问题
  11. win7可以运行python_win7安装python开发环境,运行python
  12. 360校招笔试题总结1
  13. 如何低成本测试云原生(K8s)应用?
  14. 系统服务器与手机关系,手机与云服务器交互
  15. 2018年诺贝尔经济学奖揭晓!两位美国教授获奖
  16. 多人连线的枪战游戏-补充
  17. python学习第一讲(基本的操作)
  18. 电脑端epub阅读软件分享
  19. VM虚拟机(VMware)设置外网连接
  20. 6. Z 字形变换(给定字符串,画N后逐行拼接成新字符串)

热门文章

  1. 英特尔一口气发布了三款处理器、两款存储、一款以太网适配器
  2. 《团队作业第一周》五小福团队作业——UNO
  3. JavaScript (十九):DOM对象其它操作
  4. 19. Rootkit detectors (隐形工具包检测器 5个)
  5. CMake 入门实战 | HaHack
  6. C#中的线程二(Cotrol.BeginInvoke和Control.Invoke)
  7. 百度竞价教程 借助百度热力图让你的效果翻10倍
  8. 【原创】昆虫棋离线复盘工具v1.5 更新(BoardSpace.net hive games reviewer)
  9. Windows7磁盘检查与整理的使用
  10. unity 小tip