qt5--QPainter绘图

需要 #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绘图的更多相关文章
- (十一)QPainter绘图, QPixmap,QImage,QPicture,QBitmap
#include "widget.h" #include "ui_widget.h" #include <QPainter> #include &l ...
- Qt笔记——绘图(QBitmap,QPixmap,QImage,QPicture)
QPainter绘图 重写绘图事件,虚函数 如果窗口绘图,必须放在绘图事件里实现 绘图事件内部自动调用,窗口需要重绘的时候,状态改变 绘图设备(QPixmap,QImage,QBitmap,QPict ...
- QPainter绘制图片填充方式(正常大小、剪切大小、自适应大小、平铺)
Qt中QPainter提供了绘制图像的API,极大地方便了我们对图像的绘制. Qt中提供了QPixmap, QBitmap,QBitMapQImage,QPicture等图像绘图设备,它们的类关系如下 ...
- qt 2D绘图技巧
2D绘图 Qt4中的2D绘图部分称为Arthur绘图系统.它由3个类支撑整个框架,QPainter,QPainterDevice和QPainterEngine.QPainter用来执行具体的绘图相关操 ...
- Qt 绘图(QBitmap,QPixmap,QImage,QPicture)
QPainter绘图绘图设备(QPixmap,QImage,QBitmap,QPicture) 重写绘图事件,虚函数 如果窗口绘图,必须放在绘图事件里实现 绘图事件内部自动调用,窗口需要重绘的时候,状 ...
- Qt5之坐标系统
窗口坐标为逻辑坐标,是基于视口坐标系的. 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射: QPainter::setWindow 修改了窗口位置和大小(左上角重 ...
- QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL
QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1 C语言程序设计高级实用速成课程 基础+进阶+自学 课程2 C语言程序设计Windows GDI图形绘 ...
- Qt 学习之路:Graphics View Framework
Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转.我们通常所说的 Linux 的 KD ...
- qt Graphics View Framework(非重点)
Graphics View 提供了一种接口,用于管理大量自定义的 2D 图形元素,并与之进行交互:还提供了用于将这些元素进行可视化显示的观察组件,并支持缩放和旋转. 说明;Graphics View ...
- Qt学习--部件深入--烤猪蹄
1,进程条--向用户显示程序的当前状态,向用户提示该任务需要多长时间才能够完成. Qt-ProgressBar创建进程条,QProgressBar,为了使进程条担当起进程指示功能,需要执行定义进程条的 ...
随机推荐
- session到底是何时何地生成的
关于session,之前只是在用,从没考虑到底怎么生成的 今天有空我做了个实验,把监控了一下访问某网站第一二次的请求响应详细信息,终于搞明白了,好了,开始放图 这里发起一个请求,然后我们看下第一次请 ...
- JavaSE 基础
一.Java 面向对象 1. 面向对象都有哪些特性以及 你对这些特性的理解 1.1. 继承: 继承是从已有类得到继承信息创建新类的过程. 提供继承信息的类被称为父类(超类,基类);得到继承信息的类被称 ...
- 线性基求交(线段树)--牛客第四场(xor)
题意: 给你n个基,q个询问,每个询问问你能不能 l~r 的所有基都能表示 x . 思路: 建一颗线性基的线段树,up就是求交的过程,按照线段树区间查询的方法进行check就可以了. #define ...
- cSpring Boot整合RabbitMQ详细教程
来自:https://blog.csdn.net/qq_38455201/article/details/80308771 十分详细,几张图片不显示,看这个地址 1.首先我们简单了解一下消息中间件的应 ...
- springboot JPA mysql
官方文档 https://docs.spring.io/spring-data/jpa/docs/1.11.10.RELEASE/reference/html/ 常用关键字 通常,JPA的查询创建机制 ...
- C# 面向对象4 构造函数
构造函数 1.构造函数用来创建对象,并且可以在构造函数中对对象进行初始化. (给对象的每个属性依次的赋值) 2.构造函数是用来创建对象的特殊方法: 1.方法名和类名一样. 2.没有返回值,连void都 ...
- golang(1):简介
golang语言特性: 1. 垃圾回收 a. 内存自动回收,不需要开发人员管理内存,开发人员专注业务实现 b. 只需要new分配内存,不需要释放 2. 天然并发 a. 从语言层面支持并发,非常简单 b ...
- JS基础_数据类型-Number类型
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 关于解决SpringDataJpa框架实体类表字段创建顺序与数据库表字段展示顺序不一致的问题
今天在公司的项目开发中,遇到一个问题: 后端对象实体类中写入字段顺序与数据库中的存储顺序不一致. 仔细观察到数据库中的表字段的排序方式是按照拼音字母的顺序abcdef......来存储的 而我的实体类 ...
- HTML5的新变化
1.新的html5文件类型,仅需申明在html的第一行,即 <!DOCTYPE html> 2.图形元素 figure ,将<figure>与<figcaption> ...