需要 #include <QPainter>

#include "win.h"
#include "ui_win.h"
#include <QDebug>
#include <QPainter> Win::Win(QWidget *parent) :
QWidget(parent),
ui(new Ui::Win)
{
ui->setupUi(this);
x=;
connect(ui->pushButton,&QPushButton::clicked,this,[=](){
x++;
//手动调用绘图事件
update();//更新paintEvent事件【执行paintEvent事件】 }); }
void Win::paintEvent(QPaintEvent *event){
QPainter painter(this); //创建一位画家
//参数:绘图设备。this当前窗口 QPen pen(QColor(,,)); //创建画笔
//参数:画笔颜色 pen.setWidth(); //笔宽
//【对drawText没有效果】 //pen.setStyle(Qt::DotLine); //设置笔的风格
//笔的各种风格:在Qt助手中搜索qt::penstyle painter.setPen(pen); //给画家一根笔 //QBrush brush(Qt::yellow); //创建画刷--对封闭图形填充颜色
//参数:颜色
//参看系统定义颜色:搜索Qt::GlobalColor //brush.setStyle(Qt::Dense7Pattern); //画刷风格
//画刷的各种风格:在Qt助手中搜索Qt::BrushStyle //painter.setBrush(brush); //给画家设置画刷 //painter.drawLine(QPoint(10,10),QPoint(100,10));//直线
//参数:两个点坐标 //painter.drawEllipse(QRect(10,10,90,10));//椭圆
//参数:前两个矩形左上角的点坐标,参数3和参数4:宽和高 //painter.drawEllipse(QPoint(200,200),100,50);//椭圆
//QPoint(200,200) 是圆心坐标
//100是 横向半径;50是纵向半径 //painter.drawRect(QRect(10,10,100,50));// 矩形
//参数:矩形左上角坐标,宽,高 //painter.drawRect(10,10,100,50);// 矩形
//参数:矩形左上角坐标,宽,高 //painter.drawText(QRect(10,10,100,40),"我是中国人"); //文字
//参数1 区域 //*********抗锯齿演示
//painter.drawEllipse(QPoint(100,100),50,50);
//painter.setRenderHint(QPainter::Antialiasing);//抗锯齿能力
//QPainter::Antialiasing 在可能的情况下进行边的反锯齿绘制
//QPainter::TextAntialiasing 尽可能的情况下文字的反锯齿绘制
//QPainter::SmoothPixmapTransform 使用平滑的pixmap变换算法(双线性插值算法),而不是近邻插值算法
//painter.drawEllipse(QPoint(250,100),50,50); //****平移坐标原点和状态的保存和状态的取出演示
//painter.drawRect(20,20,50,50);
//painter.translate(QPoint(100,0)); //平移坐标原点,横坐标移动100,纵坐标移动0
//painter.drawRect(20,20,50,50);
//painter.save(); //保存状态--保存坐标原点
//painter.translate(QPoint(100,0));
//painter.restore(); //取出状态--取出坐标原点
//painter.drawRect(20,20,50,50); //画资源文件中的图片
painter.drawPixmap(x,,QPixmap(":/tupin/img/1.jpg"));//图片原始大小输出 } Win::~Win()
{
delete ui;
}

以上实例下载地址:https://share.weiyun.com/5PjHG3u

绘图设备:

#include "win.h"
#include "ui_win.h"
#include <QDebug>
#include <QPainter>
#include <QPicture> Win::Win(QWidget *parent) :
QWidget(parent),
ui(new Ui::Win)
{
ui->setupUi(this); }
void Win::paintEvent(QPaintEvent *event){
//QPainter painter(this); //创建一位画家
//参数:绘图设备。this当前窗口
//QPixmap QBitmap QImage QPicture 都是绘图设备
//QPixmap专门为屏幕显示做了优化
//QBitmap是QPixmap的一个子类,它的色深限定为1(只能黑和白),可以用QPixmap的isQBitmap()函数来判断QPixmap是不是QBitmap
//QImage为图像的像素做了优化
//QPicture可以记录和重现QPainter的各条命令
//QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的。当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍,所以一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。QPixmap绘制效果是最好的 //********QPixmap做绘图设备************************
// QPixmap pix(300,300); //创建一个QPixmap绘图设备
// //参数:宽和高
// QPainter painter(&pix); //绘图设备给画家
// QPen pen(Qt::red);
// painter.setPen(pen);
// pen.setWidth(3);
// pix.fill(Qt::white); //背景填充色
// painter.drawRect(QRect(10,10,100,50));
// pix.save("D:\\sss\\pix.png"); //保存图 //********QImage做绘图设备************************
// QImage img(300,300,QImage::Format_RGB32);//创建一个QImage绘图设备
// //参数1 参数2 宽和高
// //参数3 调色板。在Qt助手搜索QImage::Format
// QPainter painter(&img); //绘图设备给画家
// QPen pen(Qt::red);
// painter.setPen(pen);
// pen.setWidth(3);
// img.fill(Qt::white); //背景填充色
// painter.drawRect(QRect(10,10,100,50));
// img.save("D:\\sss\\img.png"); //保存图 //********QImage修改像素*********
// QImage img; //创建绘图设备---理解成画纸
// img.load(":/tupin/img/1.jpg"); //加载图片
// QPainter painter(this);
// //painter.drawImage(QPoint(0,0),img); //把QImage绘图设备给画家
// for(int i=160;i<210;i++){
// for(int j=60;j<110;j++){
// QRgb rgb=qRgb(255,0,0);
// img.setPixel(i,j,rgb); //设置像素
// }
// }
// painter.drawImage(QPoint(0,0),img); //*********QPicture做绘图设备*********
QPicture pic; //创建QPicture绘图设备
//需要 #include <QPicture>
// QPainter painter;
// QPen pen(Qt::blue);
// painter.setPen(pen);
// painter.begin(&pic); //给画家绘图设备
// painter.drawRect(QRect(10,10,100,50));
// painter.end();
// pic.save("D:\\pic.lm"); //保存绘图指令
pic.load("D:\\pic.lm"); //重现绘图指令
QPainter painter(this);
painter.drawPicture(,,pic);//画pic图
//参数1 参数2 坐标 } Win::~Win()
{
delete ui;
}

上面实例下载地址:https://share.weiyun.com/5SHFONa

qt5--QPainter绘图的更多相关文章

  1. (十一)QPainter绘图, QPixmap,QImage,QPicture,QBitmap

    #include "widget.h" #include "ui_widget.h" #include <QPainter> #include &l ...

  2. Qt笔记——绘图(QBitmap,QPixmap,QImage,QPicture)

    QPainter绘图 重写绘图事件,虚函数 如果窗口绘图,必须放在绘图事件里实现 绘图事件内部自动调用,窗口需要重绘的时候,状态改变 绘图设备(QPixmap,QImage,QBitmap,QPict ...

  3. QPainter绘制图片填充方式(正常大小、剪切大小、自适应大小、平铺)

    Qt中QPainter提供了绘制图像的API,极大地方便了我们对图像的绘制. Qt中提供了QPixmap, QBitmap,QBitMapQImage,QPicture等图像绘图设备,它们的类关系如下 ...

  4. qt 2D绘图技巧

    2D绘图 Qt4中的2D绘图部分称为Arthur绘图系统.它由3个类支撑整个框架,QPainter,QPainterDevice和QPainterEngine.QPainter用来执行具体的绘图相关操 ...

  5. Qt 绘图(QBitmap,QPixmap,QImage,QPicture)

    QPainter绘图绘图设备(QPixmap,QImage,QBitmap,QPicture) 重写绘图事件,虚函数 如果窗口绘图,必须放在绘图事件里实现 绘图事件内部自动调用,窗口需要重绘的时候,状 ...

  6. Qt5之坐标系统

    窗口坐标为逻辑坐标,是基于视口坐标系的. 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射: QPainter::setWindow 修改了窗口位置和大小(左上角重 ...

  7. QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL

    QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1   C语言程序设计高级实用速成课程 基础+进阶+自学 课程2   C语言程序设计Windows GDI图形绘 ...

  8. Qt 学习之路:Graphics View Framework

    Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转.我们通常所说的 Linux 的 KD ...

  9. qt Graphics View Framework(非重点)

    Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转. 说明;Graphics View ...

  10. Qt学习--部件深入--烤猪蹄

    1,进程条--向用户显示程序的当前状态,向用户提示该任务需要多长时间才能够完成. Qt-ProgressBar创建进程条,QProgressBar,为了使进程条担当起进程指示功能,需要执行定义进程条的 ...

随机推荐

  1. session到底是何时何地生成的

    关于session,之前只是在用,从没考虑到底怎么生成的 今天有空我做了个实验,把监控了一下访问某网站第一二次的请求响应详细信息,终于搞明白了,好了,开始放图  这里发起一个请求,然后我们看下第一次请 ...

  2. JavaSE 基础

    一.Java 面向对象 1. 面向对象都有哪些特性以及 你对这些特性的理解 1.1. 继承: 继承是从已有类得到继承信息创建新类的过程. 提供继承信息的类被称为父类(超类,基类);得到继承信息的类被称 ...

  3. 线性基求交(线段树)--牛客第四场(xor)

    题意: 给你n个基,q个询问,每个询问问你能不能 l~r 的所有基都能表示 x . 思路: 建一颗线性基的线段树,up就是求交的过程,按照线段树区间查询的方法进行check就可以了. #define ...

  4. cSpring Boot整合RabbitMQ详细教程

    来自:https://blog.csdn.net/qq_38455201/article/details/80308771 十分详细,几张图片不显示,看这个地址 1.首先我们简单了解一下消息中间件的应 ...

  5. springboot JPA mysql

    官方文档 https://docs.spring.io/spring-data/jpa/docs/1.11.10.RELEASE/reference/html/ 常用关键字 通常,JPA的查询创建机制 ...

  6. C# 面向对象4 构造函数

    构造函数 1.构造函数用来创建对象,并且可以在构造函数中对对象进行初始化. (给对象的每个属性依次的赋值) 2.构造函数是用来创建对象的特殊方法: 1.方法名和类名一样. 2.没有返回值,连void都 ...

  7. golang(1):简介

    golang语言特性: 1. 垃圾回收 a. 内存自动回收,不需要开发人员管理内存,开发人员专注业务实现 b. 只需要new分配内存,不需要释放 2. 天然并发 a. 从语言层面支持并发,非常简单 b ...

  8. JS基础_数据类型-Number类型

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题

    今天在公司的项目开发中,遇到一个问题: 后端对象实体类中写入字段顺序与数据库中的存储顺序不一致. 仔细观察到数据库中的表字段的排序方式是按照拼音字母的顺序abcdef......来存储的 而我的实体类 ...

  10. HTML5的新变化

    1.新的html5文件类型,仅需申明在html的第一行,即 <!DOCTYPE html> 2.图形元素 figure ,将<figure>与<figcaption> ...