需要 #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. Leetcode之动态规划(DP)专题-62. 不同路径(Unique Paths)

    Leetcode之动态规划(DP)专题-62. 不同路径(Unique Paths) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向 ...

  2. 【VS开发】关于内存泄漏的调试

    没想到造成泄漏的原因是由于保存数据的线程因为事件阻塞在那里,此时要关闭OnClose的时候,这个挂起的线程爆出了内存泄漏,所以在关闭窗口之前,需要SetEvent(m_hSaveDataEvent); ...

  3. 【Linux开发】linux设备驱动归纳总结(七):2.内核定时器

    linux设备驱动归纳总结(七):2.内核定时器 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  4. C++学习笔记-namespace

    指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中 关于iostream <iostream>和<iostream.h>格式不 ...

  5. DQN算法原理详解

    一. 概述 强化学习算法可以分为三大类:value based, policy based 和 actor critic. 常见的是以DQN为代表的value based算法,这种算法中只有一个值函数 ...

  6. 如何解决Oracle11g使用dmp命令无法导出空表问题

    如何解决Oracle11g使用dmp命令无法导出空表问题 导出:exp  username/password@orcl file=路径 tables=(tb1)    //tables=(tb1)可有 ...

  7. python-1:正则表达式(基础知识点)

    1.简单匹配: \d  →匹配一个数字 \w →匹配一个数字或字母 \s  →匹配一个空格(包括tab等空白符) .    →匹配任意字符 *   →匹配任意个字符(包括0个) +  →匹配至少一个字 ...

  8. certutil 命令配合PS反弹后门

    Certutil.exe是一个命令行程序,作为证书服务的一部分安装.您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书 ...

  9. leecode刷题(29)-- 二叉树的中序遍历

    leecode刷题(29)-- 二叉树的中序遍历 二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 思路 跟 ...

  10. mysql架构总结

    1.单机架构模式,多用于测试,实际生产中需优化: 2.一主多从,主数据库读和写,从数据库从主数据库同步,仅负责读,可解决一定访问量的需求: 3.MHA(Master High Availability ...