图像处理QPixmap、Picture、QBitmap
创始人
2024-02-16 22:08:50

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()<

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
}
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);
}

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...