需要 #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. elasticsearch的cross_fields查询

    1.most_fields 这种方式搜索也存在某些问题 它不能使用 operator 或 minimum_should_match 参数来降低次相关结果造成的长尾效应. 2.词 peter 和 smi ...

  2. 关于.Net Core+Angular+Ueditor富文本编辑器的使用方式

    博客:https://www.cnblogs.com/24klr/ 资料:https://www.jianshu.com/p/0b21a1324d47 GitHub:https://github.co ...

  3. stm32 F40x CCM数据区的使用

    1. CCM需要打开总线时钟 2. CCM可以作为堆和栈使用 使用分散加载文件直接操作即可 RW_CCMRAM1 0x10000000 { .ANY (HEAP) .ANY (STACK) } 3. ...

  4. MySQL数据类型 约束

    一.数据库CDGS. 库 增   create database 库名; 删   drop 库名; 改 alter database 库名称 修改的属性名称; 查 show databases;#查看 ...

  5. PHP中的接口

    对象接口 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容. 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方 ...

  6. Python学习【day05】- Python文件处理

    一.打开文件 对文件的操作主要为三步:1.打开文件,得到文件句柄.2.通过句柄对文件进行操作.3.关闭文件 # 默认打开模式为r,encoding默认为系统文件编码 f=open('F:/Go.txt ...

  7. linux centos 安装jdk

    1.先查看是否已经安装的有java java -version,如果有需要卸载的直接卸载      rpm -qa | grep java 下面这几个可以删除       java-1.7.0-ope ...

  8. Angular获取dom元素,以及父子组建之间相互传值

    1.使用原生js代码获取dom元素 在ts文件中有一个ngOnInit()的方法,这个方式是指在模块加载完毕之后并不是dom加载完毕,也就是说如果你的dom元素中使用的angular的指令,然后想在这 ...

  9. BASH的保护性编程技巧

    BASH的保护性编程技巧   shell常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目 ...

  10. qt webengineview 加载本地资源方式

    一.如果把资源添加到本地资源qrc库里了,请使用 ui->preview->setUrl(QUrl("qrc:/HelloWorld2.html")): 二.如果没有现 ...