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

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);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序php+vue 校园租房指南房屋租赁系统

本着诚信的原则&#xff0c;平台必须要掌握出租方必要的真实可信的信息&#xff0c;这样就可以防止欺诈事件的发生&#xff0c;事后也可以联系找到出租方。并且租金等各方面规范标准化&#xff0c;在这易租房诚信可信的平台让承租方与出租方充分有效对接&#xff0c;既方便了承…

ConcurrentHashMap是如何保证线程安全的

ConcurrentHashMap是如何保证线程安全的 定义和问题解决JDK 1.7实现原理JDK 1.8性能优化总结 定义和问题解决 ConcurrentHashMap相当于HashMap的多线程版本。 它的功能本质上和HashMap没有什么区别&#xff0c;因为HashMap在并发操作的时候会出现各种问题&#xff0c;比如&am…

YOLOv1代码复现1:辅助功能实现

YOLOv1代码复现1&#xff1a;辅助功能实现 前言 ​ 在经历了Faster-RCNN代码解读的摧残后&#xff0c;下决心要搞点简单的&#xff0c;于是便有了本系列的博客。如果你苦于没有博客详细告诉你如何自己去实现YOLOv1&#xff0c;那么可以看看本系列的博客&#xff0c;也许可以帮助…

大屏开发需要知道哪些知识

大屏 大屏是什么呢&#xff1f;再我前几年刚接触这个词得时候很新颖&#xff0c;全名叫态势感知大屏&#xff0c;大屏得特点是炫酷、好看&#xff0c;给用户满满得科技感。 听一位前辈说当年再招标会上&#xff0c;再都用exel、word做界面图表文档得时候&#xff0c;有一家公司…

打包后dist包中app.**.js文件暴露大量接口信息,webpack-obfuscator对打包后的js代码混淆加密

问题描述 打包后dist包中app.**.js文件暴露大量接口信息&#xff0c;而webpack-obfuscator可以对打包后的js代码混淆加密 版本信息 webpack: 4.x.x node: 14.18.0 webpack4环境下使用webpack-obfuscator不能使用最新版本 我的下载版本是&#xff1a; npm install --save-de…

玩转ChatGPT:论文翻译润色

一、写在前面 首先还是让小Chat推销下自己&#xff1a; 嘿&#xff01;你是否在写论文的过程中感到头疼&#xff0c;无从下手&#xff1f;你是否在担心自己的语言表达不够专业、不够流畅&#xff0c;影响了论文的质量&#xff1f;不要担心&#xff0c;ChatGPT的润色服务可以帮…

Redis 持久化八股文

目录 Redis的持久化机制 持久化方式对比 RDB RDB 持久化 RDB 的优缺点 优点 缺点 RDB 快照时运行修改数据吗 RDB 快照时修改数据过程 写时复制技术 RDB 的执行频率 增量快照 AOF 如何开启AOF AOF 为什么要采用后写日志呢&#xff1f; 后写日志的弊端 AOF 的优…

pdf转成word | ppt | jpg图片,免费一键转换教程

我不允许真的还有人不知道如何免费将pdf转成 ppt、word 或者 jpg图片&#xff01; 职场小伙伴是不是会经常遇到pdf怎么转成word&#xff0c;pdf怎么转成word&#xff0c;pdf怎么jpg图片等问题&#xff1f;别再为pdf转化格式难、而且还要付费而发愁了&#xff01;这份pdf免费一…

Python OpenCV3 计算机视觉秘籍:6~9

原文&#xff1a;OpenCV 3 Computer Vision with Python Cookbook 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线的时候&…

IDAPython入门基础语法

文章目录 参考文章IDAPython简介常用函数获取界面地址的函数数值获取函数数值判断函数patch操作函数去除花指令实例 参考文章 IDAPython入门教程 基于IDA7.5_Python3 第一讲 简介与地址获取 IDAPython简介 IDAPython拥有强大的功能,在使用IDA分析程序时非常有用,可以简化许多…

QT 插件通信接口调用 CTK开发(四)

CTK 为支持生物医学图像计算的公共开发包,其全称为 Common Toolkit。为医学成像提供一组统一的基本功能;促进代码和数据的交互及结合;避免重复开发;在工具包(医学成像)范围内不断扩展到新任务,而不会增加现有任务的负担;整合并适应成功的解决方案。 本专栏文章较为全面…

信息安全复习三:古典密码之设计好的密码算法

一.章节梗概 讨论以下算法&#xff0c;理解怎么设计好的密码算法的关键问题 1.Caesar cipher 2.单字母表密码 3.Playfairmima 4.维吉尼亚密码 5.自动生成密码 二.Caesar cipher 2.1 穷举攻击 穷举攻击定义&#xff1a;尝试所有密钥直到有一个合法密钥能够把密文还原成明文&…

Docker私有仓库Harbor搭建及使用

文章目录 一、Harbor简介二、Harbor仓库部署三、Harbor仓库使用 一、Harbor简介 官网地址&#xff1a;https://github.com/goharbor/harbor Docker容器应用的开发和运行离不开可靠的镜像管理&#xff0c;虽然Docker官方也提供了公共的镜像仓库&#xff0c;但是从安全和效率等…

如何在Web上实现激光点云数据在线浏览和展示?

无人机激光雷达测量是一项综合性较强的应用系统&#xff0c;具有数据精度高、层次细节丰富、全天候作业等优势&#xff0c;能够精确测量三维现实世界&#xff0c;为各个行业提供了丰富有效的数据信息。但无人机激光雷达测量产生的点云数据需要占用大量的存储空间&#xff0c;甚…

SpringSecurity之权限模块设计

目录 前言 实现思路 代码结构 使用说明 前言 前面我们了解了关于微服务权限设计方案以及J W T的相关介绍&#xff0c;今天我们来聊一下&#xff0c;如何避免自己重复的写相同的代码&#xff0c;一次代码实现&#xff0c;即可完美复制到任何项目中实现权限相关的功能。 实现…

RK3568平台开发系列讲解(驱动基础篇)SMP(Symmetrical Multi-Processing)

🚀返回专栏总目录 文章目录 一、linux SMP 和 AMP二、linux SMP的启动流程三、CPU的描述:cpumask四、CPU之间的关系沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 SMP(Symmetrical Multi-Processing)。 一、linux SMP 和 AMP 目前支持多核处理器的实时操…

CxImage学习使用1:环境搭建

目录 前言 一、CxImage相关介绍 二、编译源码 三、将CxImage使用到自己的工程中 前言 CxImage是一个可以用于MFC 的C图像处理类库类&#xff0c;它可以打开&#xff0c;保存&#xff0c;显示&#xff0c;转换各种常见格式的图像文件&#xff0c;比如BMP, JPEG, GIF, PNG, TI…

300元的蓝牙耳机什么牌子好?300内无线蓝牙耳机推荐

感受过无线的自在舒适后&#xff0c;越来越多的小伙伴爱上了蓝牙耳机白天出街更潇洒&#xff0c;目前市面上蓝牙耳机琳琅满目可选择性较多价格从几十、几百元到数千元不等然而蓝牙耳机的安全性、舒适性如何&#xff1f;连接稳吗&#xff1f;下面整理了几款300元价位的耳机分享给…

【CSDN周赛】第46期题解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 本文章收录于专栏 【CSDN周赛】 本篇文章目录 &#x1f30f;一、吃吃吃&#x1f338;题目描述&#x1f338;题解 &#x1f30f;二、n …