Qt QPainter

news2024/10/7 14:30:16

QPainter需要在QPaintEvent中绘画

绘画需要笔

绘画需要的基础头文件

QPainter

QPaintEvent

QPen

QPainter

建立painter之后就可以绘画,pen这些都有默认实现

可画设备

圆用椭圆画

重新绘画

重新绘画只需要重新加入画笔就可以

painter.setPen(pen); // 重新设置画笔

painter高级设置

抗锯齿能力---setRenderHint

画出来的远见更加光滑,但是影响程序效率

    painter.drawEllipse(QPoint(100,100),50,50);
    painter.setRenderHint(QPainter::HighQualityAntialiasing);
    painter.drawEllipse(QPoint(200,200),50,50);

 移动画家位置---translate()----(实际上移动坐标原点)

    painter.drawRect(QRect(200,200,200,200));
    painter.translate(50,50);
    painter.drawRect(QRect(200,200,200,200));

 保存和释放画家状态

 更新绘图事件

update()

update会自动调用paintEvent()函数,从小绘图。

rotate---顺时针旋转坐标系

注意:

1,坐标围绕原点旋转,需要使用translate将原点移动到旋转中心。

2,rotate只对调用rotate之后绘制的图形有旋转作用。

物体绕着中心原点自转

   

    painter.translate(width()/2,height()/2);
    painter.rotate(m_angle);

    // 绘制正方形
    QRectF rect(0, 0, 100, 100);
    painter.drawRect(rect);

物体自转

//设置旋转中心
    painter.translate(width()/2,height()/2);
    painter.rotate(m_angle);
    painter.drawEllipse(QPoint(0,0),50,25);

将图形的旋转中心设置到原点,图形就会绕着原点旋转,如果图形的旋转中心是自己的中心,就会自转。

paintEvent

系统自动调用。

Brush

brush是什么

就是对painter绘制出来的封闭图形进行颜色填充,粉刷。

    QBrush brush(QColor("#ffa400"));
    //brush.setColor(QColor("#ffa400"));
    painter.setBrush(brush);
    painter.drawRect(20,20,100,100);

注意:如果brush的brushStyle为No Brush,则表示这个brush为不粉刷模式,粉刷没有作用。

如果使用无参构造函数,表示建立黑色粉刷笔,并且不会粉刷,不会填充形状。

painter取消粉刷

painter.setBrush(Qt::NoBrush);

 怎么获取屏幕中心位置:

painter.drawEllipse(QPoint((this->width())/2,(this->height())/2),100,100);

QPainterPath

函数

QPainter::QPainter(QPaintDevice *device)

device指定在哪个对象绘画

Qt颜色

Qt::中也有

绘图设备

绘图的几种类的比较

为什么可以在QWidget上绘图

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shell脚本中的数值计算:使用数学运算实现数值操作

前言 沐风晓月带你学云原生开发,从零开始,我们出发,让知识学习不再难。 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家 😉&…

高数基础6

目录 导数与微分 导数的定义式: 导数的第二个定义式: 左右导数 区间内可导 例题: 例题2: 微分 微分的概念 例题: 导数的几何意义: 切线方程与法线方程 例题: 连续可导可微之间的关系…

短视频矩阵系统源码开发部署分享

短视频矩阵系统源码开发需要用到以下技术: 1.前端技术:HTML、CSS、JavaScript、Vue.js等前端框架。 2.后端技术:Java、Python、PHP等后端语言及相关框架,如Spring Boot、Django、Laravel等。 3.移动开发技术:Androi…

文本匹配模型实验报告-text2vec

文本匹配模型实验报告-text2vec 尽管基于BERT的模型在NLP诸多下游任务中取得了成功,直接从BERT导出的句向量表示往往被约束在一个很小的区域内,表现出很高的相似度,因而难以直接用于文本语义匹配。为解决BERT原生句子表示这种“坍缩”现象&a…

软件开发流程的演变:敏捷开发(XP、SCRUM)、DevOps(CI/CD)的概念

一、软件开发流程的演变 二、传统瀑布模型 1.瀑布模型特点 软件开发的各项活动严格按照线性方式进行 当前活动接受上一项活动的工作结果 当前活动的工作结果需要进行验证 2.瀑布模型优缺点 优点 开发的各个阶段比较清晰 强调早期计划及需求调查 适合需求稳定的产品开发 缺点…

权限获得第一步

根据题目提示flag就是某个密码,并且flag不是常规形式 打开文件后看起来是一个linux的用户密码段 反正最后两个最可疑了,linux中密码的存储形式是MD5加密 第一个数据解码失败 第二个密文解密成功 果然不是常规形式,常规的flag一本都是是英文加…

在Linux系统下使用Ventoy制作Windows安装U盘

文章目录 介绍Ventoy 简介PE 简介 制作 Ventoy U 盘安装 Ventoy将 Ventoy 安装到 U 盘 制作 PE 辅助系统下载优启通下载操作系统 ISO 镜像 安装操作系统准备工作安装系统 介绍 Ventoy 简介 Ventoy 是一个制作可启动 U 盘的开源工具。有了 Ventoy ,就无需反复地格式…

IDE/记录VS2015WinSDK安装过程中增删的系统组件和环境变量

文章目录 概述看看"干净OS环境"安装VS软件后系统目录变化环境变量变化新增的组件程序 Qt及其VS插件安装后安装WinSDK后安装Win10SDK前安装WinSDK后 卸载VS2015其他软件的影响 概述 本文旨在,通过记录干净OS环境下 VS2015、Qt、WinSDK 软件安装前后&#…

使用mount临时挂载出现mount error(13): Permission denied

问题报错 mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) //报错信息,提示账号密码错误,其实并不是 添加secntlmssp参数即可;中途可能需要等一些时间 mount -t cifs -o usernamelisi,p…

在低配Windows上部署原版llama.cpp

现在大语言模型的部署,通常都需要大的GPU才能实现,如果是仅仅想研究一下,大语言模型的算法,我们是很想能够直接在我们的工作电脑上就能直接运行的,llama.cpp就是很好的实现。 LLaMa.cpp使用int4这种数值格式&#xff…

【js步骤引导】基于jquery实现步骤引导进度条效果(附源码)

【写在前面】 步骤引导条这个功能其实在我们很多业务系统中是最常见的,尤其是快递订单、审批流程、上传资源等涉及步骤操作的业务中广泛应用,因此今天我也详细的和大家讲讲如何基于jquery去实现步骤引导效果,支持上一步下一步的切换。 【涉…

【云计算】HBase表操作

文章目录 前言一、shell创建二、操作 前言 HBase是一个分布式、可扩展的、非关系型的NoSQL数据库。它是建立在Hadoop HDFS上的一个开源的数据库管理系统。HBase的设计目标是提供高可靠性、高可扩展性、高性能、高延迟、高容错性和高可用性。 HBase是一种面向列的数据库&#…

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning 本文提出了一个自主分组机制,这种机制具有 选举指挥官(CE) 和 消息总结(MS) 的功能。 在 CE 中,每隔 T个时间步…

【无标题】机器学习——朴素贝叶斯

朴素贝叶斯(Naive Bayesian algorithm)是有监督学习的一种分类算法,它基于“贝叶斯定理”实现,该原理的提出人是英国著名数学家托马斯贝叶斯。 一、贝叶斯定理 P(A) 这是概率中最基本的符号,表示 A 出现的概率。比如在…

Spark 4/5

4. 启动Spark Shell编程 4.1 什么是Spark Shell spark shell是spark中的交互式命令行客户端,可以在spark shell中使用scala编写spark程序,启动后默认已经创建了SparkContext,别名为sc 4.2 启动Spark Shell Shell /opt/apps/spark-3.2.3-bi…

实战深入了解redis+消息队列如何实现秒杀

SpringBoot Redis RabbitMQ 实现高并发限时秒杀 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作&…

配置NIS服务器及客户端

在服务端安装所需软件包 设置主机名和NIS域名 编辑 NIS服务器主配置文件 最下面编辑访问控制 建立测试用户 配置NFS,否则客户端切换用户时,用户没有家目录 安装NFS所需软件包 Nfs-utils 给两个共享目录权限,编辑NFS配制文件 共享两个目录 重…

12.JavaWeb-Spring Boot + 物业管理项目

1.Spring Boot 概念 自动处理应用程序幕后的各种杂事(Spring框架的应用程序的配置和部署过程),让你专注于做那些使应用程序独特的工作 1.1 Spring Boot的核心功能 1.1.1 自动配置 Spring Boot根据应用程序的依赖和配置信息&#xff0…

计算机网络——自顶向下方法(第二章学习记录)

本章学习应用层 网络应用是计算机网络存在的理由。 网络应用程序体系结构 现代网络应用程序有两种主流体系结构:客户—服务器体系结构和对等(P2P)体系结构 客户—服务器体系结构(client-server ),在这个结构中,有一个总是打开的…

SAP CAP篇五:为CAP添加Fiori Elements程序(2)

本文目录 本系列之前的文章新建Fiori Elements Application选择Application TypeData SourceEntity SelectionProject InformationLaunchpad Setting 修改manage-books文件夹子文件夹 webapp重命名 annotations.cds更新fiori-service.cdsmanifest.json 添加services.cds到app文…