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,为了使进程条担当起进程指示功能,需要执行定义进程条的 ...
随机推荐
- fio 硬盘测试工具
一.windows环境 1. 安装fio:http://www.bluestop.org/fio/ 可以选择不同版本的安装,安装后在C:\Program Files\fio目录中可以找到fio的执行程 ...
- VIM全总结
Vim是Linux自带的编辑器,是Vi的高级版,刚开始使用我是一脸懵逼的,跟普通的编辑器完全不同,基本全靠键盘,写完之后也不知道怎么保存,特地花了点时间了解了一下,还是挺简单的.其中,主要包含三种模式 ...
- property自己实现
# 先回顾一下 class Room: def __init__(self,name,width,length): self.name = name self.width = width self.l ...
- HDWIKI6.0后台任意文件删除/下载
- Fragment通过接口回调向父Activity传值
Fragment: 定义一个接口,在onAttach()方法中,实例化接口对象.要求是父Activity要实现该接口.然后在你想发送信息的地方调用callBackValue.sendMessageVa ...
- Column常用的参数
#encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String,DateTime from sqlalchemy ...
- 基于硬件的消息队列中间件 Solace 简介之二
前言...... 前面简单介绍了Solace来自于哪家公司, 主要能做哪些事情. 本篇主要进一步介绍Solace作为消息传递的中间件如何工作的. 传统意义上来讲, 每当我们谈到消息中间件时, 首先想到 ...
- java追加文件
public class AppendToFile { /** * A方法追加文件:使用RandomAccessFile */ public static void appendMethodA(Str ...
- 纯css实现单选框样式
html代码 <h2>你最喜欢的水果</h2> <div class="input-radio"> <!-- 选中状态添加 checked ...
- 日期和时间(datetime模块)
前言: 参考:https://blog.csdn.net/weixin_42232219/article/details/89838580 在 python 中,datetime 是对日期数据进行处理 ...