27黑马QT笔记之QPixmap和QBitmap的区别
前提:首先我们先要了解什么是透明和不透明的图片。
1)透明是指显示后与背景颜色一样的。
2)不透明就是有自己的颜色,与背景颜色不一样。
看下图,前者就是透明的,后者是背景是白色的,是不透明的。
1 :
QBitmap是QPixmap的一个子类,QPixmap可以彩色绘图,而QBitmap只能绘出黑白两种颜色。
2 代码:
重写绘图事件。
1)头文件只需写:
//绘图必须重写绘图事件
void paintEvent(QPaintEvent *event);
2)实现.cpp文件只需写:
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter p(this);
//开始绘图操作
//用QPixmap、QBitmap绘透明图片
p.drawPixmap(0,0,100,100,QPixmap("://butterfly.png"));
p.drawPixmap(100,0,100,100,QBitmap("://butterfly.png"));
//用QPixmap、QBitmap绘不透明图片 上面用匿名对象 这里用有名对象
QPixmap pix;
pix.load(":/butterfly1.png");
p.drawPixmap(0,150,100,100,pix);
QBitmap bit;
bit.load(":/butterfly1.png");
p.drawPixmap(100,150,100,100,bit);
}
结果:
看下图可以看出,第一行的两张图片是透明图片画出的;第二行两张是不透明画出的。我们可以观察出,QPixmap画透明图片仍是透明,不透明的仍是不透明,例如第一第三张彩色图。而第二张QBitmap画透明图变成了不透明,第四张不透名图又变成了透明,其实QBitmap绘图时,我们不管它是不是能将透明与不透明可以相互转换,我们只需要记住,它只能显示黑白两种颜色就OK了。