Qt绘图编程-绘制多边形、椭圆、多条直线

2023-11-17

1、说明

所有的绘图操作是在绘图事件中进行。
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    //重写虚函数
   virtual void paintEvent(QPaintEvent *event);
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.c

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QPainter>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //设置窗口固定大小(X轴,Y轴)
    this->resize(1800,1000);
}
void MainWindow::paintEvent(QPaintEvent *event)
{

}

2、绘制多个点

   //定义画家 ,需要一个画板(QPaintDevice)对象来构造  QPainter(QPaintDevice *)
    QPainter painter(this);
    //反锯齿设置
    painter.setRenderHint(QPainter::Antialiasing);
    /*------------1、绘制一个点函数-----------*/
    //定义画笔 15是画笔的粗细
    QPen pen( QBrush( Qt::red) , 15);
    //把画笔给画家
    painter.setPen(pen);
    //开始画点
    painter.drawPoint(QPoint( 0,0));
    //绘制两个点
    painter.drawPoint(QPoint( 100,100));
    /*------------2、绘制多个点函数,定义函数-----------*/
    //画多个点 定义的一个数组
    //定义画笔 15是画笔的粗细 设置为蓝色
    pen.setColor(Qt::blue);
    //把画笔给画家
    painter.setPen(pen);
    QPoint pts[]={  QPoint( 200,200),QPoint( 300,300) };
    painter.drawPoints(pts,2);//绘制多个点函数

在这里插入图片描述

3、绘制多条直线

/*------------3、方式二:绘制一条直线方式一-----------*/

    QPen pen1( QBrush( Qt::red) , 15);
    pen1.setColor(Qt::green);
    //修改画笔的粗细
    pen1.setWidth(3);
    //重新设置画笔 画笔交给画家 替换画家手中原来的画笔 **重要**
    painter.setPen(pen1);

    //画直线 两点确定一条直线
    painter.drawLine(QPoint( 200,200),QPoint( 300,300)  );
   /*------------4、绘制多条直线,定义数组多用,重要-----------*/
    pen1.setColor(Qt::blue);
    painter.setPen(pen1);        //替换画家手中原来的画笔 **重要**
    QLine line(400,400,  500,500);
    QLine line2(600,600, 700,700);
    QLine lines[] ={ line, line2};
    //画多条线 将多条画线交给画家 替换原来的画线
    painter.drawLines(lines,2  );

在这里插入图片描述

4、绘制椭圆

    /*------------5、绘制椭圆-----------*/
    //绘制椭圆代码 矩形圆心坐标(200,100) 长轴50 短轴20
    painter.drawEllipse(200,100,50,20);

在这里插入图片描述

5、绘制多边形

此处绘制的多边形会形成闭合。

  /*------------6、绘制多边形-----------*/
    QPolygon pts;
    //3个点, (32,0) (44,0) (38,50)
    pts.setPoints(3, 32 ,0 , 44, 0,38,50);

    //设置画笔与画刷 画笔颜色 填充颜色
    //    painter.setPen(QPen(Qt::white,0.5));
    //    painter.setBrush( QColor("#FF4500") );
    painter.drawPolygon(pts);

在这里插入图片描述

6、绘制多条直线

同时绘制多条直线。

 /*------------6、绘制多条直线-----------*/
    QLineF line3(43.0576+400,-468.5811+800,  357.5507+400,-557.6556+800);
    QLineF line4(47.6494+410,-467.0754+800,  363.1472+410,-556.4345+800);

    QLineF _lines[] ={ line3, line4};
    //画多条线 将多条画线交给画家 替换原来的画线
    painter.drawLines(_lines,2);

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt绘图编程-绘制多边形、椭圆、多条直线 的相关文章

随机推荐

  • 植被物候参数遥感研究进展(好文分享)

    在气候变化背景下 植被物候作为生态系统对环境变化响应的直接体现方式 日益受到学界关注 获取长期 连续 多尺度的植被物候数据是物候研究的基础 而利用卫星遥感手段获取的物候参数已经成为陆地生态系统变化研究的重要指标 遥感物候参数在农业生产管理
  • 530 Please login with USER and PASS.

    安装 npm install save hexo deployer ftpsync 配置 deploy type ftpsync host xx xx xx xx user bxu123123 pass xx11123 remote htd
  • C++ RSA加解密

    原文链接 https blog csdn net u011029517 article details 79392522 之前需要用到RSA加解密的时候花费了我不少的时间 网上有很多RSA加解密的文章 但大多数都是从文件读取公钥或者私钥的
  • 字节跳动五面都过了,结果被刷了,问了hr原因竟说是...

    摘要 说在前面 面试时最好不要虚报工资 本来字节跳动是很想去的 几轮面试也通过了 最后没offer 自己只想到几个原因 1 虚报工资 比实际高30 2 有更好的人选 这个可能性不大 我看还在招聘 我是面试Android开发的 3年经验 下面
  • linux clamav 免费查毒工具

    linux下需要杀毒工具吗 我一直认为是不要的 基于linux的病毒很少 linux 安全防护也做的很好 一般很难功破 我想那些 们更喜欢 写windows下的病毒 用的人多啊 传播也容易 下面的操作 都是以管理员的身份来进行的 一 安装c
  • Java各种系统架构图及其简介

    1 spring架构图 Spring是一个开源框架 是为了解决企业应用程序开发复杂性而创建的 框架的主要优势之一就是其分层架构 分层架构允许您选择使用哪一个组件 同时为J2EE应用程序开发提供集成的框架 Spring框架的功能可以用在任何J
  • 使用Xshell7控制多台服务同时安装ZK最新版集群服务

    一 环境准备 主机名称 主机IP 节点 集群内通讯端口 选举leader clinet端提供服务 端口 docker0 192 168 1 100 node 0 2888 3888 2181 docker1 192 168 1 101 no
  • 61.(前端)权限管理实现——从数据库中获取数据展示在前端,使用插槽和Tag标签美化数据展示

    1 概述 本次内容 主要是对用户权限列表进行展示 2 基本流程 在component文件夹下创建power文件夹 并在power文件夹下创建Menu vue 在Menu vue任意编写显示内容 用于测试 去router index js挂载
  • 解决Scrapy使用pipline保存到数据库后返回None

    这也不算报错哈 解决方法 在process item处理完成后返回item即可 return item 案例分析 比如下面的pipeline class MyPipeline object def init self host 127 0
  • Flask 实现文件上传和下载(简单但实用)

    目录结构和代码 root master w upload ll total 4 0K drwxr xr x 3 root root 21 Jul 2 17 32 static drwxr xr x 2 root root 25 Jul 5
  • Android在EditText中只能输入中文或者指定类型的内容

    之前做过一个需求 在EditText中只能输入中文或者英文字符不能输入特殊字符和数字等一些其他内容 查阅了一些资料 需要重写一下EditText中的相关方法就可以完成该功能 总结一下 方便之后使用 看一下效果图 可以看到在EditText中
  • Redis系列之二:Redis基础知识

    引言 正所谓万丈高楼平地起 学习一项技术都需要从其基础知识开始 上一篇介绍了Redis在Linux环境下的安装步骤 本文主要介绍了Redis的基础知识 包括数据结构以及常用命令等 废话不多说 我们直接开始吧 Redis基础数据结构 Redi
  • GPT-4 的创造力全方位持平或碾压人类

    文章目录 一 前言 二 主要内容 三 总结 CSDN 叶庭云 https yetingyun blog csdn net 一 前言 最近 一项有关 GPT 4 的创造力思维测试火了 来自蒙大拿大学和 UM Western 大学的研究团队发现
  • 工作——自动化测试中用到的SQL server查询语句的格式调整

    SELECT CONVERT VARCHAR 100 GETDATE 0 05 16 2006 10 57AM SELECT CONVERT VARCHAR 100 GETDATE 1 05 16 06 SELECT CONVERT VAR
  • 深入理解sed模式空间——sed ‘n;p‘

    在进入正题之前我们先来了解一下sed的模式空间 如下 什么是sed的模式空间 答 仅供参考 就是从文件读取一行文本然后存入的缓冲区 然后命令操作模式空间的内容 在初始状态下模式空间是没有内容的 在每次循环读取数据的过程中 模式空间都会被清空
  • Mybatis+Mysql 实现树形结构查询

    Mybatis
  • v3+element管理系统----主题定制 && 刷新 && 全屏

    目录 暗黑模式 如何启用 应用 自定义主题 应用 全屏 刷新 router view的v slot transition 标签 动态组件 nextTick 暗黑模式 现在 Element Plus 终于支持了暗黑模式 我们提取并整理了所有的
  • Linux中gcc/g++ gdb make/Make 的基本使用和理解

    1 gcc g 的基本使用 gcc和g 是两种编译器 也就是用来编译c c 源文件的编译器 其中 gcc用来编译c语言 而g 用来编译c 当然由于c 兼容c 所以说 g 也是可以编译c语言源文件的 但是我们不经常这么做 gcc和g 的使用没
  • 编写 LuCI CBI 模型

    编写 LuCI CBI 模型 CBI模型是描述UCI配置文件结构的Lua文件 并且CBI解析器将lua文件转为HTML呈现给用户 所有 CBI 模型文件都必须返回类型为luci cbi Map的对象 CBI 模型文件的范围由 luci cb
  • Qt绘图编程-绘制多边形、椭圆、多条直线

    1 说明 所有的绘图操作是在绘图事件中进行 mainwindow h ifndef MAINWINDOW H define MAINWINDOW H include