QT QPainter 绘制基本图形元件简介

news2024/10/7 4:34:22

1.基本图形元件
QPainter 提供了很多绘制基本图形的功能,包括点、直线、椭圆、矩形、曲线等,由这些基本的图形可以构成复杂的图形。QPainter 中提供的绘制基本图元的函数如下表所示。每个函数基本上都有多种参数形式,这里只列出函数名,给出了其中一种参数形式的示例代码,并且假设已经通过以下的代码获得了绘图窗口的 painter、窗口宽度W和高度H。

QPainter painter(this);
int w=this->width(); //绘图区宽度
int H=this->height(); //绘图区高度

同一个函数名的其他参数形式的函数原型可查阅 Qt 的帮助文件。

函数名

功能和示例代码

示例图形

drawArc

画弧线,例如

QRect rect(W/4,H/4,/2,H/2);

int startAngle = 90 * 16;//起始 90°

int spanAngle = 90 * 16;//旋转 90°

painter.drawArc(rect, startAngle, spanAngle);

drawChord

画一段弦,例如

QRect rect(W/4,H/4,W/2,H/2);

int startAnqle = 90 * 16;//起始 90°

int spanAngle = 90 * 16;//旋转 90°

painter. drawChord (rect, startAngle, spanAngle);

drawConvexPolygon

根据给定的点画凸多边形

QPoint points[4]={

QPoint(5*W/12,H/4),

QPoint(3*W/4,5*H/12),

QPoint(5*W/12,3*H/4),

QPoint(W/45*H/12),};

painter.drawConvexPolygon(points, 4);

drawEllipse

画椭圆

QRect rect(W/4,H/4,W/2,H/2);

painter.drawEllipse(rect);

drawImage

在指定的矩形区域内绘制图片

QRect rect(W/4,H/4,W/2,H/2);

QImage image(":images/images/qt.jpg");

painter.drawImage(rect, image);

drawLine

画直线

OLine Line(W/4,H/4,W/2,H/2);

painter.drawLine(Line);

drawLines

画一批直线

QRectrect(W/4,H/4,W/2,H/2);

QVector<QLine> Lines;

Lines.append(QLine(rect.topLeft(),rect.bottomRight()));

Lines.append(QLine(rect.topRight(),rect.bottomLeft()));

Lines.append(QLine(rect.topLeft(),rect.bottomLeft()));

Lines.append(QLine(rect.topRight(),rect,bottomRight()));

painter.drawLines(Lines);

drawPath

绘制由QPainterPath对象定义的路线

QRect rect(W/4,H/4,W/2,H/2);

QPainterPath path;path.addEllipse(rect);

path.addRect(rect);

painter.drawPath(path);

drawPie

绘制扇形

QRect rect(W/4,H/4,W/2,H/2);

int startAnqle = 40 * 16;//起始40°

int spanAngle = 120 * 16;//旋转120°painter.drawPie(rect, startAngle, spanAngle);

drawPixmap

绘制 Pixmap图片

QRect rect(W/4,H/4,W/2,H/2);

QPixmappixmap(":images/images/qt.jpg");

painter.drawPixmap(rect, pixmap);

drawPoint

画一个点

painter.drawPoint(QPoint(W/2,H/2));

drawPoints

画一批点

QPoint points[]={

QPoint(5*W/12,H/4),

QPoint(3*W/4,5*H/12),

QPoint(2*W/4,5*H/12)};

painter.drawPoints(points, 3);

drawPolygon

画多边形,最后一个点会和第一个点闭合

QPoint points[]={QPoint(5*W/12,H/4),

QPoint(3*W/4,5*H/12),

QPoint(5*W/12,3*H/4),

QPoint(2*W/4,5*H/12)};

painter.drawPolygon(points, 4);

drawPolyline

画多点连接的线,最后一个点不会和第一个点连接QPoint points[]={

QPoint(5*W/12,H/4),

QPoint(3*W/4,5*H/12),

QPoint(5*W/12,3*H/4),

QPoint(2*W/4,5*H/12),};

painter.drawPolyline(points, 4);

drawRect

画矩形

QRect rect(W/4,H/4,W/2,H/2);

painter.drawRect(rect);

drawRoundedRect

画圆角矩形

ORect rect(W/4,H/4,W/2,H/2);

painter.drawRoundedRect(rect,20,20);

drawText

绘制文本,只能绘制单行文字,字体的大小等属性由 QPainter::font0)决定。

QRect rect(W/4,H/4,W/2,H/2);

QFontfont;font.setPointSize(30);

font.setBold(true);

painter.setFont(font);

painter.drawText (rect,"Hello,Qt");

eraseRect

擦除某个矩形区域,等效于用背景色填充该区域

QRect rect(W/4,H/4,W/2,H/2);

painter.eraseRect(rect);

fillPath

填充某个QPainterPath 定义的绘图路径,但是轮廓线不显示

QRect rect(W/4,H/4,W/2,H/2);

QPainterPath path;

path.addEllipse(rect);

path.addRect(rect);

painter.fillPath(path,Qt::red);

fillRect

填充一个矩形,无边框线

QRect rect(W/4,H/4,W/2,H/2);

painter.fillRect (rect,Ot::green);

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

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

相关文章

Elastic Common Schema 和 OpenTelemetry — 无需供应商锁定即可获得更好的可观察性和安全性的途径

作者&#xff1a;Elastic 可观察性和安全团队 在 KubeCon Europe 上&#xff0c;宣布 Elastic Common Schema (ECS) 已被 OpenTelemetry (OTel) 接受作为对该项目的贡献。 目标是将 ECS 和 OpenTelemetry 的语义约定 (SemConv) 融合到一个由 OpenTelemetry 维护的开放模式中。 …

LearnOpenGL-模型加载

1.配置Assimp库。 下载Assimp&#xff0c;解压后得到 assimp-master 文件。在文件中新建一个 build 文件。使用 Cmake 生成工程文件保存在 build 中&#xff0c;从这里下载CMake&#xff0c;下载最新的即可。 打开CMake&#xff0c;选择需要源文件目录和目标目录。修改成适配…

机器学习平台、自研DPU、资源并池,火山引擎发布多云、AI基础设施与增长法宝

1、每十家大模型企业&#xff0c;七家在火山引擎云上。 2、火山引擎大模型训练云平台&#xff0c;支持万卡训练&#xff0c;集群性能提升3倍 3、火山引擎新一代自研DPU&#xff0c;实现计算、存储、网络的全组件卸载&#xff0c;释放更多资源给业务负载。 4、火山引擎与字节国内…

数据库管理软件dbeaver-ce 下载安装并离线配置

文章目录 前言数据库管理软件dbeaver-ce 下载安装并离线配置1. 概述2. 下载3. 安装4. 离线配置驱动jar包5. 链接mysql 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天…

谷歌aab包手机怎么安装教程

一、概述 bundletool是一种底层工具&#xff0c;可供 Android Studio、Android Gradle 插件和 Google Play 用于构建 Android App Bundle 文件并将 app bundle 转换为部署到设备的各种 APK。您也可以将 bundletool作为一种命令行工具&#xff0c;用于自行构建 app bundle 和重新…

【笔试强训编程题】Day2.(排序子序列 100448)和(倒置字符串 69389)

文章目录 前言 一、排序子序列 100448 题目描述 代码实现 二、倒置字符串 69389 题目描述 代码实现 总结 前言 今天让我们来练习两道经典的编程题&#xff01;&#xff01;&#xff01;&#xff01; 一、排序子序列 100448 题目描述&#xff1a;牛牛定义排序子序列为…

平台资金提现解决方案之实现支付宝单笔转账到银行卡功能

大家好&#xff0c;我是小悟 使用场景 不管是做APP、电脑网站、手机网站还是小程序&#xff0c;为了推广基本上都离不开用户分佣的场景。 换句话说就是在其平台内为每个用户设置“电子钱包”功能&#xff0c;而电子钱包在平台那里只是一串数字&#xff0c;这就需要平台为用户…

详解 ES6中 Promise 构造函数的使用

文章目录 前言什么是 Promise&#xff1f;Promise 的几种状态拆分细解 PromisePromise all&#xff08;&#xff09;方法then()方法 返回一个新的 Promise 时的状态由什么决定&#xff1f;总结 前言 Promise 是ES6 新增的一个异步调用解决方案&#xff0c;它的出现是为了解决异…

Elasticsearch的调优思路

环境&#xff1a;centos7、elasticsearch-5.6.4 1、性能调优 1.1、Linux参数调优 1.1.1、关闭交换分区 目的是防止内存置换降低性能&#xff0c;将 /etc/fstab 文件中包含 swap 的行注释掉。 #执行命令&#xff1a;注释相关 swap的行 sed -i /swap/s/^/#/ /etc/fstab#将 /etc/f…

彻底弄清FreeRTOS中的事件组(Event Groups)

​之前已经学过两个任务之间可以利用信号量、队列来通信&#xff0c;任务可以利用这两个机制等待某一个事件发生&#xff0c;但是假如需要等待多个事件发生呢&#xff1f;这就需要用到事件组了。 事件组可以让任务进入阻塞态&#xff0c;等待一个或多个事件的组合发生。当事件…

根据 cadence 设计图学习硬件知识 day02 了解飞腾 X100芯片

1. 飞腾芯片 X100的介绍 飞腾套片X100是一款微处理器的配套芯片&#xff0c;主要功能包括图形图像处理和接口扩展两类。在图形图像处理方面&#xff0c;集成了图形处理加速GPU、视频解码VPU、显示控制接口DisplayPort以及显存控制器&#xff1b;在接口扩展方面&#xff0c;支持…

【矩形面积】

题目来源&#xff1a;https://leetcode.cn/problems/rectangle-area/ 目录 矩形面积 矩形面积 题目介绍 给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形&#xff0c;请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示&#xf…

数字化转型危与机,20年老厂的升级之路

“投资大、周期长、见效慢”&#xff0c;是每一家企业在考虑数字化战略时&#xff0c;都会纠结的问题。 打江山容易&#xff0c;守江山难 企业在快速扩张的过程中&#xff0c;往往可以不需要过多的考虑细节的问题&#xff0c;跑马圈地的打法会更加有效。 但是市场占有量开始饱…

JS Array数组常用方法

会改变原数组的方法 1、array.push(需要在末尾添加的数据)【给数组末尾添加一个元素】 2、array.unshift(需要在首位添加的数据)【给数组首位添加一个元素】 3、array.pop()【从数组末尾删除元素,不需要传参】 4、array.shift()【从数组首位开始删除元素,不需要传参】 5、arra…

数据处理方法(LFSR)

一、线性反馈移位寄存器&#xff08;LFSR&#xff09;编码概述 线性反馈移位寄存器&#xff08;LFSR&#xff09;&#xff1a;通常由移位寄存器和异或门逻辑组成。其主要应用在&#xff1a; 伪随机数&#xff0c;伪噪声序列&#xff0c;计数器&#xff0c;BIST&#xff0c;数据…

树脂吸附含钴废水的实际案例

三元聚合物-锂电池是指正极材料使用锂、镍、钴、锰三元正极材料的锂电池&#xff0c;锂离子电池的正极材料有很多种&#xff0c;主要有钴酸锂、锰酸锂、镍酸锂、三元材料、磷酸铁锂等。用三元材料作为正极材料的动力锂电池&#xff0c;近年来凭借其容量高、循环稳定性&#xff…

Java笔记一(黑马)

目录 一.标准的javaBean二.反射1.获取class对象的三种方式2.反射获取构造方法3.反射获取成员变量4.反射获取成员方法 三.网络编程TCP Serve/ClientNIO框架Netty 一.标准的javaBean package com.itheima.domain;public class Student {//1.成员变量私有化//2.空参&#xff0c;带…

数据结构-树及相关算法

二叉树 递归算法的关键要明确函数的定义&#xff0c;相信这个定义&#xff0c;而不要跳进递归细节。 写二叉树的算法题&#xff0c;都是基于递归框架的&#xff0c;我们先要搞清楚 root 节点它自己要做什么&#xff0c;然后根据题目要求选择使用前序&#xff0c;中序&#xff0…

colmap使用教程

COLMAP 是具有图形和命令行界面的通用运动结构 (SfM) 和多视图立体 (MVS) 管道。 它为有序和无序图像集的重建提供了广泛的功能。 常见的基于nerf算法均需要colmap来计算位姿 安装colmap&#xff1a; conda install colmap 需要使用python9 step1&#xff1a;准备多视角图…

第十三节 I/O流与文件操作

文件读写 输入输出流 文本文件 一个字节一个字节写 8位十进制最大255 int read() throws IOException 字节 java.io.OutputStream 将十进制数按字节 用文件的类 表达文件 1.txt 相对路径 &#xff1a;工程是同级的 绝对路径C盘下 D 万物皆对象 都能封装成对象…