QPainter. QpaintDevice 绘图设备

QPaintDevice 绘图设备

1 QPixmap QImage Qbitmap(黑白色) QPicture QWidget

2 QPixmap 对不同平台做了显示优化  fill(填充颜色) QPainter paintere(&pic) 画家往设备上画 画完保存 save("路径")

3 QImage 可以对像素进行访问,和 QPixmap 差不多 对像素进行修改 img.setPixel();

4 Qpicture 记录和重现绘图指令。save 的时候可以上任意后缀名称 重现利用画家 painter.drawPicture();

widget.h

复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
protected:
    void paintEvent(QPaintEvent * even);



private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
复制代码

 

 

widght.cpp

复制代码
#include "widget.h"
#include "ui_widget.h"
#include<QPixmap>
#include<QPainter>
#include<QImage>
#include<QPicture>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //绘画设备专门为为平台做显示优化的
    QPixmap pixmap(300,300);
    pixmap.fill(Qt::white);//填充颜色

    QPainter painter(&pixmap);
    painter.setPen(QPen(Qt::green)); //设置绿色
    //在设备上画圆
    painter.drawEllipse(QPoint(100,100),100,100);//在点100,100 的位置画圆
    pixmap.save("/Users/libin/qtProject/painterDraw/pix.png");


     //////图片//////Qimag
     QImage imag(300,300,QImage::Format_ARGB32);
     QPainter painter2(&imag);
     painter2.setPen(QPen(Qt::red));
     painter2.drawEllipse(QPoint(150,150),100,100);
     imag.save("/Users/libin/qtProject/painterDraw/imag.png");


     ////QPictrue///////////绘图设备可以记录和重现绘图指令
     QPicture picture;
     QPainter painter4;
     painter4.setPen(QPen(Qt::red));
     painter4.begin(&picture); //开始往设备上画
     painter4.drawEllipse(QPoint(20,20),200,200);
     painter4.end();//结束
     picture.save("/Users/libin/qtProject/paintDevice/pic.zt");



}
void Widget::paintEvent(QPaintEvent *even){
    QImage img;
    img.load(":/mm.png");
    QPainter painter3(this);
    for(int i =0;i<200;++i){
        for(int j = 0;j<200;++j){
            QRgb rbg = qRgb(255,i,j);
            img.setPixel(i,j,rbg);
        }
    }
    painter3.drawImage(0,0,img);

    //读取画笔指令
    QPainter q5(this);
    QPicture picture3;
    picture3.load("/Users/libin/qtProject/paintDevice/pic.zt");
    q5.drawPicture(0,0,picture3);


}

Widget::~Widget()
{
    delete ui;
}
复制代码

 

posted @   摇摆的时钟  阅读(250)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示