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*)方法,进行绘图。
代码如下:
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QBitmap bitmap(":/1.png");
QPixmap pixmap(":/1.png");
painter.drawPixmap(, , rect().width()/, rect().height(), bitmap);
painter.drawPixmap(rect().width()/, , rect().width()/, rect().height(), pixmap);
}

Qt中QBitmap 的使用 --QBitmap的作用的更多相关文章
- Qt中QT_BEGIN_NAMESPACE和QT_END_NAMESPACE的作用
在Qt中,我们经常会看到 QT_BEGIN_NAMESPACE class QAction; class QMenu; class QPlainTextEdit; QT_END_NAMESPACE 这 ...
- Qt中常用知识点
1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegEx ...
- qt中ui的 使用介绍
1.什么是ui?ui通常是用Qt 设计师设计出来的界面文件的后缀.通常情况下ui是一个指向这个界面类的指针.ui-> 一般就是用来访问这个界面类里面的控件.例如你的ui文件里有一个叫okButt ...
- QT 中 关键字讲解(emit,signal,slot)
Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...
- Qt中使用ActiveX(3篇)
由于最近需要使用ActiveX,一般来说可以使用微软提供的MFC或者ATL框架来开发,由于我个人对这部分内容不是很熟悉,好在Qt也提供对于ActiveX的支持.本文主要记录个人学习ActiveX的一些 ...
- Qt中QObject中的parent参数
今天写了一个小程序,验证了带参的构造函数中参数parent的作用. 在MainWindow中声明一个QDialog类型的指针,在MainWindow中对它进行初始化.我采用了两种初始化方式,一种是带参 ...
- Qt中的 Size Hints 和 Size Policies
sizeHint 这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeH ...
- 解析Qt中QThread使用方法
本文讲述的是在Qt中QThread使用方法,QThread似乎是很难的一个东西,特别是信号和槽,有非常多的人(尽管使用者本人往往不知道)在用不恰当(甚至错误)的方式在使用QThread,随便用goog ...
- Qt中如何写一个model
在qt中,用到最多就是model/view的结构来表示数据层及表示层的关系.model用于给view提供数据.那如何来实现一个简单的树形model呢. 实现一个自己的model需要重载以下的方法: Q ...
随机推荐
- Annotation之一:Java Annotation基本功能介绍
一.元数据的作用 如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类: 编写文档:通过代码里标识的元数据生成文档.这是最常见的,也是java 最早提供的 ...
- 在工作表左侧中添加TreeView控件
开发环境基于VSTO:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 需求是在sheet的左侧停靠System.Windows.Forms.TreeV ...
- Codeforces Round #499 (Div. 2)(1011)
Natasha is planning an expedition to Mars for nn people. One of the important tasks is to provide fo ...
- mysql 批量插入与单条插入 的效率比较
1.数据插入性能(单个插入和批量插入) public class Test { private Long id; private String test; public Long getId() { ...
- 《转》我的ARM学习经历
1.基础阶段 话说06年第一份工作从事的是PLC开发,用protel画原理图和PCB,写AVR单片机程序,焊焊板子,还去过华强北买器件,比较杂,但是接触面比较广,为进一步学ARM打下了基础. ...
- 转载--解决ora-00119和ora-00132这个问题
前提:服务全部打开,监听也配置好了! win7 64位 Oracle 11g 简单的sql命令: 先登录到sqlplus: sqlplus /nolog; 登录数据库: conn system/ ...
- 关于js的keyCode
原生js的event对象有三个键盘事件的值: 1) charCode: 被点击键的Unicode值 2) keyCode: 被点击键的ASCII十进制值 3) which: 字母数字键的charCod ...
- Jquery缩放
$(document).mousemove(function(e) { if (!!this.move) { var posix = !document.move_target ...
- Spring总结五:小结 使用spring访问servlet
使用spring访问servlet 首先先建一个web项目,并在pom.xml中引入依赖包:spring-context和jsp servlet相关包,以及tomcat插件 其次建一个spring的配 ...
- zookeeper伪集群的搭建
由于公司服务器数量的限制,我们往往没有那么多的服务器用来搭建zookeeper的集群,所以产生了伪集群的搭建,也就是将多个zookeeper搭建在同一台机器上. 准备工作: 1,一台服务器,我们这里用 ...