QT绘图设备(QPixmap,QImage,QPicture)

QPixmap:针对屏幕进行优化了,和平台相关,不能对图片修改
QImage:和平台无关,可以对图像进行修改,在线程中绘图
QPicture:保存绘图的状态(二进制文件)

QPixmap转换为QImage
QImage tempImage = pixmap.toImage();

QImage 转换为QPixmap
QPixmap temppixmap = QPixmap::fromImage(image);

eg:

QPixmap:
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //绘图设备
    QPixmap pixmap(500,500);//画布
    QPainter p(&pixmap);
    //填充背景
    p.fillRect(0,0,500,500,QBrush(Qt::white));
    //或者pixmap.fill(Qt::white);

    p.drawPixmap(0,0,80,80,QPixmap("../Image/2.jpg"));
    //保存
    pixmap.save("../Image/pixmap.jpg");
}
Widget::~Widget()
{
    delete ui;
}
QImage:
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QDebug>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //QImage image;//注意使用带参的QImage时不能声明后使用,系统会自动判你的声明为定义无参函数QImage();
    //指定背景大小和背景颜色
    //QImage::Format_RGB32 黑色背景
    QImage image(500,500,QImage::Format_ARGB32);//透明背景
    QPainter p;
    p.begin(&image);
    //绘图
    p.drawImage(0,0,QImage("../Image/2.jpg"));
    for(int i = 0;i<50;i++)
    {
        for(int j=0;j<50;j++)
        {
            image.setPixel(QPoint(i,j),qRgb(0,255,0));
            //获取某点的像素值
            qDebug()<<image.pixel(QPoint(i,j));//返回值为qRgb
        }
    }
    image.save("../image.png");
    p.end();
}

Widget::~Widget()
{
    delete ui;
}
QPicture:

#include "widget.h"
#include "ui_widget.h"
#include <QPicture>
#include <QPainter>


Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);


    QPicture picture;
    QPainter p;
    p.begin(&picture);
    p.drawPixmap(0,0,500,500,QPixmap("../Image/2.jpg"));
    p.drawLine(50,50,150,50);
    p.end();
    //保存成二进制文件,无法打开查看,可通过重写事件在Qt窗口查看
    picture.save("../picture.jpg");
}


Widget::~Widget()
{
    delete ui;
}
void Widget::paintEvent(QPaintEvent *event)//这是对paintEvent的重新,注意在 .h 中声明
{
    QPicture pic;
    pic.load("../picture.jpg");
    QPainter p(this);
    p.drawPicture(0,0,pic);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值