QT:绘图事件QPainter

绘图事件QPainter

绘图事件(需要重写的函数):paintEvent
声明一个画家对象 QPainter painter(this)	指定绘图设备
画线,画圆,画矩形,画文字
可设置画笔,画刷
#include <QPainter>
......
//绘图事件,重写 系统会自动调用void paintEvent(QPaintEvent *);

void MainWindow::paintEvent(QPaintEvent *)
{//加上头文件//实例化画家对象QPainter painter(this); //说明是在当前widget下画//画线painter.drawLine(QPoint(0,0),QPoint(100,100));//画圆painter.drawEllipse(QPoint(100,100),50,50);//画矩形painter.drawRect(QRect(20,20,50,50));//画文字painter.drawText(QRect(10,200,100,50),"举例举例举例举例举例举例");//设置画笔颜色    还有很多参数,详细的在QPen中查找QPen pen(QColor(255,0,0));//让画家 使用画笔painter.setPen(pen);//画矩形painter.drawRect(QRect(150,150,30,30));//设置画刷(封闭图形会填充颜色),还有很多类型设置可在QBrush中查找QBrush brush(QColor(0,255,0));//让画家使用画刷painter.setBrush(brush);painter.drawRect(QRect(300,300,30,30));}

在这里插入图片描述

QPainter高级设置

1.抗锯齿,效率低,清晰度提高:
painter.setRenderHint(QPainter::Antialiasing);
2.对画家移动:painter.translate(100,0);
3.保存状态,还原状态
void MainWindow::paintEvent(QPaintEvent *)
{
//绘图高级设置(视频2)QPainter painter(this);painter.drawEllipse(QPoint(100,50),50,50);//设置 抗锯齿的能力 效率低 图形会更清晰painter.setRenderHint(QPainter::Antialiasing);painter.drawEllipse(QPoint(200,50),50,50);//画矩形painter.drawRect(QRect(200,200,30,30));painter.translate(100,0);   //偏移,则会与下一个圆不产生重合重叠,移动画家painter.drawRect(QRect(200,200,30,30));painter.translate(100,0);//还原画家状态painter.restore();painter.drawRect(QRect(200,200,30,30)); //这个会和第一个重合
}

在这里插入图片描述

手动调用绘图事件

先导入资源图片;
如果需要手动调用绘图事件,利用update
利用画家画图片 painter.drawPixmap()
//绘图事件,重写 系统会自动调用void paintEvent(QPaintEvent *);int PosX=0;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//点击移动按钮,移动图像connect(ui->pushButton,&QPushButton::clicked,[=](){//更改图片画图的位置 手动调用绘图事件PosX += 20;update();	//手动调用绘图事件});
}
//绘图事件
void MainWindow::paintEvent(QPaintEvent *)
{
///利用画家画资源图片QPainter painter(this);//如果超出屏幕,再从0开始if(PosX>this->width()){PosX = 0;}painter.drawPixmap(PosX,100,QPixmap(":/1.jpg"));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/76046.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Three.js 实现模型材质局部辉光效果和解决辉光影响场景背景图显示的问题

1.Three.js 实现模型材质局部辉光效果 2.解决辉光效果影响场景背景图显示的问题 相关API的使用&#xff1a; 1. EffectComposer&#xff08;渲染后处理的通用框架&#xff0c;用于将多个渲染通道&#xff08;pass&#xff09;组合在一起创建特定的视觉效果&#xff09; 2. …

实例040 限制窗体大小

实例说明 Windows窗体是可以随意改变大小的&#xff0c;然而对于一些要求严格的窗体&#xff0c;开发人员不希望用户随意的改变其大小&#xff0c;例如&#xff0c;定位准确的地图和游戏软件等。遇到这种情况必须对窗口的大小进行一些限制。本例设计一个限制了大小的窗体&#…

vueuse常用方法

useDateFormat 时间格式化 <script setup lang"ts">import { useNow, useDateFormat } from vueuse/coreconst formatted useDateFormat(useNow(), YYYY-MM-DD HH:mm:ss)</script><template><div>{{ formatted }}</div> </templa…

Delphi 安卓App自动升级

Androidapi.JNI.Support引用这个单元 procedure _InstallApk(Apk: string); varLFile: JFile;LIntent: JIntent; beginLFile : TJFile.JavaClass.init(StringToJString(ExtractFilePath(Apk)), StringToJstring(ExtractFileName(Apk)));LIntent : TJIntent.Create;LIntent.set…

spring(15) SpringBoot启动过程

目录 一、过程简介二、过程流程图三、源码分析1、运行 SpringApplication.run() 方法2、确定应用程序类型3、加载所有的初始化器4、加载所有的监听器5、设置程序运行的主类6、开启计时器7、将 java.awt.headless 设置为 true8、获取并启用监听器9、设置应用程序参数10、准备环境…

实现简单的element-table的拖拽效果

第一步&#xff0c;先随便创建element表格 <el-table ref"dragTable" :data"tableData" style"width: 100%" border fit highlight-current-row><el-table-column label"日期" width"180"><template slot-sc…

python高级基础

文章目录 python高级基础闭包修饰器单例模式跟工厂模式工厂模式单例模式 多线程多进程创建websocket服务端手写客户端 python高级基础 闭包 简单解释一下闭包就是可以在内部访问外部函数的变量&#xff0c;因为如果声明全局变量&#xff0c;那在后面就有可能会修改 在闭包中的…

前端vue自定义柱形图 选中更改柱形图颜色及文字标注颜色

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

RS232、RS422、RS485硬件及RS指令、RS2指令应用知识学习

RS232、RS422、RS485硬件及RS指令、RS2指令应用知识学习 一、串行&#xff08;异步/同步)通讯、并行通讯、以太网通讯 二、单工通讯/半双工通讯/双工通讯 三、常用硬件接口&#xff08;工业上基本是RS485两线制的接线&#xff09; 常用硬件接口RS232/RS422/RS485&#xff0c;…

LeetCode--HOT100题(37)

目录 题目描述&#xff1a;104. 二叉树的最大深度&#xff08;简单&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;104. 二叉树的最大深度&#xff08;简单&#xff09; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远…

快速上手PyCharm指南

PyCharm简介 PyCharm是一种Python IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如调试、语法高亮、项目管理、代码跳转、智能提示、自动…

怎么借助ChatGPT处理数据结构的问题

目录 使用ChatGPT进行数据格式化转换 代码示例 ChatGPT格式化数据提示语 代码示例 批量格式化数据提示语 代码示例 ChatGPT生成的格式化批处理代码 使用ChatGPT合并不同数据源的数据 合并数据提示语 自动合并数据提示语 ChatGPT生成的自动合并代码 结论 数据合并是…