QT绘图设备的使用

11 篇文章 0 订阅

一、绘图设备

QPixmap:针对屏幕进行了优化和平台相关,不能对图片进行修改

QImage:和平台相关,可以对图片进行修改,在线程中绘图

QPicture:保存绘图的状态(二进制文件)

 

二、QPixmap绘图

    QPixmap pixmap(400,300);

    QPainter p;

 

    p.begin(&pixmap);

 

   // p.fillRect(0,0,400,300,QBrush(Qt::white));//画家填充白色,默认为黑色

    pixmap.fill(Qt::white);//绘图设备填充白色

 

    p.drawPixmap(0,0,80,80,QPixmap(":/new/picture/1226486.png"));//绘图

    pixmap.save("../Test8/1.png");//也可以保存为jpg格式,并设置保存的路径

 

 

    p.end();

 

三、QImage绘图

    QImage image(600,600,QImage::Format_ARGB32_Premultiplied);

    QPainter p;

 

    p.begin(&image);

 

 

    for(int i=0; i<10; i++)

    {

        for(int j=0; j<10;j++)

        {

            image.setPixel(QPoint(i,j),qRgb(0,255,255));//在图片上画像素点

            QRgb rgb = image.pixel(QPoint(i,j));         //在图片获取像素点的颜色

        }

    }

    p.drawImage(0,0,QImage(":/new/picture/1226486.png"));

 

    image.save("../Test8/1.png");

 

    p.end();

 

四、QPicture绘图

Widget::Widget(QWidget *parent)

    : QWidget(parent)

    , ui(new Ui::Widget)

{

    ui->setupUi(this);

 

 

    QPicture picrure;

    QPainter p;

 

 

    p.begin(&picrure);

 

 

    p.drawPixmap(0,0,QPixmap(":/new/picture/1226486.png")); //绘图

    p.drawLine(0,0,200,200);//画线

 

 

    p.end();

 

    picrure.save("../Test8/1.png");   //保存,不过十二进制文件,不能直接打开查看,可用程序重新加载查看

}

 

void Widget::paintEvent(QPaintEvent *event)

{

    QPainter p;

    QPicture picrure;

    picrure.load("../Test8/1.png");   //加载二进制文件

    p.begin(this);                    //绘画在窗口上

 

 

    p.drawPicture(0,0,picrure);    //画图

 

 

    p.end();

}

 

五、QPixmap和QImage之间的转换

1.QPixmap转换为QImage

    QPainter p;

    QPixmap pixmap;

    pixmap.load(":/new/picture/1226486.png");//加载图片

    QImage image = pixmap.toImage();//转换为image

    p.begin(this);

 

    p.drawImage(0,0,image);

 

    p.end();

2.QImage转换为QPixmap

void Widget::paintEvent(QPaintEvent *event)

{

    QPainter p;

    QImage image;

    image.load(":/new/picture/1226486.png");//加载图片

    QPixmap pixmap = QPixmap::fromImage(image);//转换为pixmap

    p.begin(this);

 

 

    p.drawPixmap(0,0,pixmap);

 

 

    p.end();

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值