【qt】绘图

绘图

  • 一.画家
  • 二.绘图事件
  • 三.坐标体系
  • 四.画笔
    • 1.setColor
    • 2.setWidth
    • 3.setStyle
    • 4.setCapStyle
    • 5.setJoinStyle
    • 6.给画家配置笔
  • 五.画刷
    • 1.setColor
    • 2.setStyle
    • 3.给画家设置刷子
  • 六.用到的类汇总
    • 1.QRect 矩形
    • 2.QPoint 点
    • 3.QImage 图片
    • 4.QPixmap 图片
    • 5.QLine 线
    • 6.QPainterPath 路径
  • 七.开始画画★
    • 1.矩形
    • 2.画刷填充
    • 3.圆角矩形
    • 4.内接椭圆
    • 5.圆弧
    • 6.弦
    • 7.凸多边形
    • 8.多边形
    • 9.image图片
    • 10.pixmap图片
    • 11.线
    • 12.多条线
    • 13.点连线
    • 14.路径
    • 15.扇形
    • 16.点
    • 17.多个点
    • 18.文本
    • 19.擦除
    • 20.填充矩形和路径
  • 八.爽了

一.画家

Qt里面用QPainter来绘图,我们可以形象的理解成一个画家!

二.绘图事件

QWidget里面,绘图的操作都在这个函数里面进行!
在这里插入图片描述

三.坐标体系

easyx一样,左上角为原点
在这里插入图片描述

四.画笔

画家有了,但是我们需要给他画笔,才能真正的可以画画!

1.setColor

设置画笔的颜色

2.setWidth

设置画笔的粗细

3.setStyle

在这里插入图片描述

4.setCapStyle

在这里插入图片描述

5.setJoinStyle

在这里插入图片描述

6.给画家配置笔

void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);//画家painter.setRenderHint(QPainter::Antialiasing);//使画家画画更平滑painter.setRenderHint(QPainter::TextAntialiasing);//使画家写字更平滑QPen pen;//笔pen.setColor(Qt::red);pen.setWidth(4);pen.setStyle(Qt::SolidLine);pen.setCapStyle(Qt::FlatCap);pen.setJoinStyle(Qt::BevelJoin);painter.setPen(pen);//给画家设置笔}

五.画刷

1.setColor

给刷子设置颜色

2.setStyle

在这里插入图片描述

3.给画家设置刷子

    QPainter painter(this);//画家QBrush brush;brush.setColor(Qt::blue);brush.setStyle(Qt::SolidPattern);painter.setBrush(brush);//给画家设置刷子

六.用到的类汇总

1.QRect 矩形

2.QPoint 点

3.QImage 图片

4.QPixmap 图片

5.QLine 线

6.QPainterPath 路径

七.开始画画★

1.矩形

     QPainter painter(this);//画家QPen pen;pen.setColor(Qt::red);pen.setWidth(4);painter.setPen(pen);QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高painter.drawRect(rect);

运行结果:
在这里插入图片描述

2.画刷填充

     QPainter painter(this);//画家QPen pen;pen.setColor(Qt::red);pen.setWidth(4);QBrush brush;brush.setColor(Qt::green);brush.setStyle(Qt::SolidPattern);painter.setBrush(brush);painter.setPen(pen);QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高painter.drawRect(rect);

运行结果:
在这里插入图片描述

3.圆角矩形

painter.drawRoundedRect(rect,20,20);//后面两个参数为水平半径和垂直半径

运行结果:
在这里插入图片描述

4.内接椭圆

painter.drawEllipse(rect);

运行结果:
在这里插入图片描述

5.圆弧

painter.drawArc(rect,0*16,90*16);//后面两个参数为度数

为什么要乘以16呢,因为qt里面将一度划分成了16份.
我们要想0到90°就需要乘以16,不然就是0~5°左右.
还有qt的0°是3点钟方向开始逆时针的方向.

运行结果:
在这里插入图片描述

6.弦

painter.drawChord(rect,0*16,-90*16);//可以负号改变方向

运行结果:
在这里插入图片描述

7.凸多边形

QPoint points[4]={{50,50},{100,200},{200,400},{20,300}};
painter.drawConvexPolygon(points,4);//第二个参数为几个点

运行结果:
在这里插入图片描述

8.多边形

QPoint points[4]={{50,50},{100,200},{200,400},{20,300}};
painter.drawPolygon(points,4);//第二个参数为几个点

与凸多边形一样,但是更全面!
运行结果:
在这里插入图片描述

9.image图片

     QImage image(":/bg.png");QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高painter.drawImage(rect,image);//在矩形区域内显示可拉伸

运行结果:
在这里插入图片描述

10.pixmap图片

     QPixmap pixmap(":/bg.png");QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高painter.drawPixmap(rect,pixmap);//在矩形区域内显示可拉伸

运行结果:
在这里插入图片描述

11.线

     QLine line(0,0,500,500);painter.drawLine(line);

在这里插入图片描述

12.多条线

     QVector<QLine>lines;lines.append(QLine(0,0,200,200));lines.append(QLine(200,200,500,100));painter.drawLines(lines);

运行结果:
在这里插入图片描述

13.点连线

QPoint point[3]={{0,0},{200,200},{500,100}};painter.drawPolyline(point,3);

运行结果:
在这里插入图片描述

14.路径

     QPainterPath path;QRect rect(200,150,400,300);path.addRect(rect);path.addEllipse(rect);painter.drawPath(path);

运行结果:
在这里插入图片描述

15.扇形

     QRect rect(200,150,400,300);painter.drawPie(rect,0,90*16);

运行结果:
在这里插入图片描述

16.点

     QPoint point(300,300);pen.setWidth(20);//设置大点,你们才能看见这个点painter.setPen(pen);painter.drawPoint(point);

运行结果:
在这里插入图片描述

17.多个点

QPoint points[4]={{50,50},{100,200},{200,400},{20,300}};
painter.drawPoints(points,4);

运行结果:
在这里插入图片描述

18.文本

     QFont font;font.setPixelSize(30);font.setFamily("微软雅黑");font.setBold(true);painter.setFont(font);//给画笔设置字体QRect rect(200,150,400,300);//矩形内显示字体painter.drawText(rect,"姚哥");

运行结果;
在这里插入图片描述

19.擦除

          QImage image(":/bg.png");QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高painter.drawImage(rect,image);//在矩形区域内显示可拉伸QRect rect1(300,250,200,100);painter.eraseRect(rect1);

运行结果:
在这里插入图片描述
原理就是用背景色填充.

          this->setPalette(QPalette(Qt::green));//设置窗口背景色QImage image(":/bg.png");QRect rect(200,150,400,300);//矩形,前两个参数是左上角坐标,后两个参数是矩形的宽和高painter.drawImage(rect,image);//在矩形区域内显示可拉伸QRect rect1(300,250,200,100);painter.eraseRect(rect1);

运行结果:
在这里插入图片描述

20.填充矩形和路径

        QRect rect1(200,150,400,300);painter.fillRect(rect1,Qt::blue);

运行结果:
在这里插入图片描述

 QPainterPath path;QRect rect(200,150,400,300);path.addRect(rect);path.addEllipse(rect);painter.drawPath(path);painter.fillPath(path,Qt::green);

运行结果:
在这里插入图片描述

八.爽了

学会了绘图.就请想象你是一名画家,请尽情开始你的创制吧!
Show time!

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

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

相关文章

aabb c++

题目描述 查找形如"aabb"的四位完全平方数&#xff0c;也即前两位数字相同&#xff0c;后两位数字也相同。 输入 无 输出 若干行&#xff0c;每行一个符合条件的四位数&#xff08;从小到大&#xff09;。 分析&#xff1a; 完全平方数&#xff1a; &#xff…

中国蚁剑 安装教程 2024年5月

2024/5/11 中国蚁剑 安装教程 一、下载中国蚁剑的加载器和核心源码&#xff08;两个都要用到&#xff09; github官方下载地址&#xff1a;https://github.com/AntSwordProject/ 参考文档&#xff1a;antSword/README_CN.md at master AntSwordProject/antSword GitHub 核…

Golang-分离式加载器(传参)AES加密

目录 enc.go 生成: dec.go --执行dec.go...--上线 cs生成个c语言的shellcode. enc.go go run .\enc.go shellcode 生成: --key为公钥. --code为AES加密后的数据, ----此脚本每次运行key和code都会变化. package mainimport ("bytes""crypto/aes"&…

【数据结构与算法】使用数组实现栈:原理、步骤与应用

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​ 目录 一、引言 &#x1f384;栈&#xff08;Stack&#xff09;是什么&#xff1f; &#x1…

windows系统下安装fnm

由于最近做项目要切换多个node版本&#xff0c;查询了一下常用的有nvm和fnm这两种&#xff0c;对比了一下选择了fnm。 下载fnm 有两种方式&#xff0c;目前最新版本是1.37.0&#xff1a; 1.windows下打开powershell&#xff0c;执行以下命令下载fnm winget install Schniz.f…

机器学习--线性模型和非线性模型的区别?哪些模型是线性模型,哪些模型是非线性模型?

文章目录 引言线性模型和非线性模型的区别线性模型非线性模型 总结线性模型非线性模型 引言 在机器学习和统计学领域&#xff0c;模型的选择直接影响到预测的准确性和计算的效率。根据输入特征与输出变量之间关系的复杂程度&#xff0c;模型可以分为线性模型和非线性模型。线性…

体素技术在AI绘画中的革新作用

随着人工智能技术的不断进步&#xff0c;AI绘画已经成为艺术创作和视觉设计领域的一大趋势。在众多推动AI绘画发展的技术中&#xff0c;体素技术以其独特的优势&#xff0c;正在逐渐改变着我们对计算机生成图像的认识。本文旨在探讨体素技术在AI绘画中的应用与影响&#xff0c;…

ChatGPT Prompt技术全攻略-总结篇:Prompt工程技术的未来发展

系列篇章&#x1f4a5; No.文章1ChatGPT Prompt技术全攻略-入门篇&#xff1a;AI提示工程基础2ChatGPT Prompt技术全攻略-进阶篇&#xff1a;深入Prompt工程技术3ChatGPT Prompt技术全攻略-高级篇&#xff1a;掌握高级Prompt工程技术4ChatGPT Prompt技术全攻略-应用篇&#xf…

在 Ubuntu 中安装 Docker

在 Ubuntu 中安装 Docker 首先&#xff0c;更新你的 Ubuntu 系统。 1、更新 Ubuntu 打开终端&#xff0c;依次运行下列命令&#xff1a; $ sudo apt update $ sudo apt upgrade $ sudo apt full-upgrade 2、添加 Docker 库 首先&#xff0c;安装必要的证书并允许 apt 包…

【玩转C语言】第四讲--->操作符与循环语句

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 引言&#xff1a; 大家好&#xff0c;我是坊钰&#xff0c;为了让大家深入了解C语言&#xff0c;我开创了【玩转C语言系列】&#xff0c;将为大家介绍C语言相关知识…

IO缓冲流

目录 字节缓冲流 字符缓冲流 构造方法 字符缓冲流特有方法 BufferedReader(Reader r) Bufferedwriter(Writer r) 综合练习 1、四种方式拷贝文件&#xff0c;并统计各自用时字节流的基本流:一次读写一个字节 2、恢复出师表的顺序 3、当程序运行超过3次时给出提示:本软…

【C++20工程实战】自己动手实现纯头文件日志库

文章目录 一、std::format二、std::source_location三、detail名字空间四、X-macro技术五、cpp20的log参考 一、std::format GCC 13, CLANG 14 and MSVC 16.10/VS 2019 all have the {fmt} based std::format available in respective standard libraries. 基本字符串格式化&am…

《精通ChatGPT:从入门到大师的Prompt指南》附录A:常用Prompt示例

附录A&#xff1a;常用Prompt示例 在《精通ChatGPT&#xff1a;从入门到大师的Prompt指南》的附录A中&#xff0c;我们将展示一系列常用的Prompt示例&#xff0c;帮助读者更好地理解和应用Prompt技术。每个示例将包含Prompt的描述、使用场景、预期结果以及实际输出。希望这些示…

LLVM Cpu0 新后端10

想好好熟悉一下llvm开发一个新后端都要干什么&#xff0c;于是参考了老师的系列文章&#xff1a; LLVM 后端实践笔记 代码在这里&#xff08;还没来得及准备&#xff0c;先用网盘暂存一下&#xff09;&#xff1a; 链接: https://pan.baidu.com/s/1yLAtXs9XwtyEzYSlDCSlqw?…

Centos修改默认端口22

修改Centos服务器ssh链接的默认端口22到任意端口&#xff0c;主要两个步骤&#xff1a; 修改配置文件&#xff0c;添加端口开放防火墙 一、 vim /etc/ssh/sshd_config 在文件中 #Port 22 行下增加 # Port 22 Port [修改后端口]注意&#xff1a; 这里 先将其中的#Port 22前的…

ffmpeg视频解码原理和实战-(5)硬件加速解码后进行渲染并输出帧率

头文件&#xff1a; xvideoview.h #ifndef XVIDEO_VIEW_H #define XVIDEO_VIEW_H #include <mutex> #include <fstream> struct AVFrame;void MSleep(unsigned int ms);//获取当前时间戳 毫秒 long long NowMs();/// 视频渲染接口类 /// 隐藏SDL实现 /// 渲染方案…

【电机控制】FOC算法验证步骤

【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…

归并排序——逆序数对的统计

逆序数对的统计 题目描述 运行代码 #include <iostream> using namespace std; #define LL long long const int N 1e5 5; int a[N], tmp[N]; LL merge_sort(int q[], int l, int r) {if (l > r)return 0; int mid l r >> 1; LL res merge_sort(q, l,…

【数据结构(邓俊辉)学习笔记】图07——最短路径

文章目录 0. 概述1. 问题2. 最短路径2.1 最短路径树2.1.1 单调性2.1.2 歧义性2.1. 3 无环性 2.2 Dijkstra 算法2.2.1 贪心迭代2.2.2 实现2.2.3 实例2.2.4 复杂度 0. 概述 学习下最短路径和Dijistra算法 1. 问题 给定带权网络G (V, E)&#xff0c;以及源点&#xff08;source…

4.大模型微调技术LoRA

大模型低秩适配(LoRA)技术 现有PEFT 方法的局限与挑战 Adapter方法,通过增加模型深度而额外增加了模型推理延时。Prompt Tuning、Prefix Tuning、P-Tuning等方法中的提示较难训练,同时缩短了模型可用的序列长度。往往难以同时实现高效率和高质量,效果通常不及完全微调(f…