Qt_C++ PaintDevice绘图

PaintDevice包括:QPixmap  QImage  QPicture  QWidget   QBitmap等

Pixmap:

1.创建Pixmap 对象 Pixmap pix(300,300);//设置画图界面大小

2.创建画家Painter painter(&pix)//使用pix绘图设备

3.设置pix背景颜色pix.fill()

4.painter画图

5.保存到磁盘pix.save("")

    //QPixmap 绘图事件  可将画的图片保存在本地
    QPixmap pix(300,300);//设置窗口大小
    pix.fill(Qt::white);//设置pixmap的背景颜色
    QPainter painter(&pix);
    painter.setPen(Qt::blue);
    painter.drawText(0,100,"唧唧复唧唧");
    pix.save("D:/image/text_pix.png");

QImage:

         绘图设备   可以对像素值进行修改(触发绘图事件)

1.做绘图设备

    QImage img(300,300,QImage::Format_RGB32);
    img.fill(Qt::white);
    QPainter painter(&img);
    painter.setPen(Qt::red);
    painter.drawEllipse(QPoint(150,150),100,100);
    painter.setPen(Qt::green);
    painter.drawEllipse(QPoint(150,150),80,80);
    img.save("D:/image/text_img.png");

2.修改资源文件的像素值

声明绘图事件函数paintEvent

在函数中定义QImage img,并且加载资源图片,设置要修改的区域以及要修改的数值,

QRgb val=qRgb(-,-,-)

img.setPixel(x,y,val)

最后使用画家画出修改后的资源图片painter.drawImage(0,0,img);

//绘图事件
void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QImage img;
    img.load(":/image/xyy.png");//加载资源文件
    for(int i=0;i<100;++i)
    {
        for(int j=0;j<100;++j)
        {
            QRgb val=qRgb(189,123,65);
            img.setPixel(i,j,val);
        }
    }

    painter.drawImage(0,0,img);
}

QPicture:  记录并重现指令

QPicture pic

QPainter painter;

//开始

painter.begin(&pic);

painter.draw

painter.end()

//结束

//保存

pic.save(地址)

    //QPicture绘图设备 可以记录和重现 绘图指令
    QPicture pic;
    QPainter painter;

    painter.begin(&pic);

    painter.setPen(Qt::cyan);
    painter.drawEllipse(QPoint(150,150),100,100);

    painter.end();


    //保存到磁盘
    pic.save("D:/image/pic.lk");

//

重新加载指令,在此窗口进行绘画(显示)

QPainter painter(this);

QPicture pic;

pic.load(地址)

painter.drawPicture(x,y,pic);

    //重现QPainter的绘画指令
    QPainter painter(this);
    QPicture pic;
    pic.load("D:/image/pic.lk");//加载绘图指令
    painter.drawPicture(0,0,pic);

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值