第一种:直接在界面上绘制

在widget中对paintEvent进行重写,然后就可以得到多边形。

void Widget::paintEvent(QPaintEvent *event)
{//创建画笔QPainter painter(this);//创建画刷QBrush brush(QColor(0, 0, 255), Qt::SolidPattern);//使用画刷painter.setBrush(brush);//定义四个点static const QPointF points[4] = {QPointF(270.0, 80.0),QPointF(290.0, 10.0),QPointF(350.0, 30.0),QPointF(390.0, 70.0)};//使用四个点绘制多边形painter.drawPolygon(points, 4);
}

第二种:利用QT图形视图框架绘制

QT图形视图框架(Graphics View)

参考:https://blog.csdn.net/qq_40732350/article/details/90116319

首先对Item进行继承

myitem.h

#include <QGraphicsItem>class MyItem : public QGraphicsItem
{
public:MyItem();QRectF boundingRect() const;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,QWidget *widget);void setColor(const QColor &color) { brushColor = color; }private:QColor brushColor;};

myitem.cpp

#include "myitem.h"
#include <QPainter>
#include <QCursor>
#include <QKeyEvent>
#include <QGraphicsSceneHoverEvent>
#include <QGraphicsSceneContextMenuEvent>
#include <QMenu>
#include <qdebug.h>MyItem::MyItem()
{brushColor = Qt::red;setFlag(QGraphicsItem::ItemIsFocusable);setFlag(QGraphicsItem::ItemIsMovable);setAcceptHoverEvents(true);}
void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *,QWidget *)
{if (hasFocus()) {painter->setPen(QPen(QColor(255, 255, 255, 200)));} else {painter->setPen(QPen(QColor(100, 100, 100, 100)));}painter->setBrush(brushColor);//painter->drawRect(-10, -10, 20, 20);// 定义四个点static const QPointF points[4] = {QPointF(200.0, 80.0),QPointF(220.0, 10.0),QPointF(270.0, 30.0),QPointF(310.0, 70.0)};// 使用四个点绘制多边形painter->drawPolygon(points, 4);}QRectF MyItem::boundingRect() const
{qreal adjust = 0.5;return QRectF(-10 - adjust, -10 - adjust,20 + adjust, 20 + adjust);
}
#include "widget.h"
#include "ui_widget.h"
#include <QGraphicsRectItem>
#include <qdebug.h>
#include "myitem.h"
#include <qpainter.h>
Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);m_scene=new QGraphicsScene;MyItem *item=new MyItem;item->setPos(0,0);item->setColor(QColor(Qt::red));m_scene->addItem(item);ui->graphicsView->setSceneRect(-100,-100,100,100);ui->graphicsView->setScene(m_scene);}Widget::~Widget()
{delete m_scene;delete ui;
}

运行结果:

QT绘制不规则多边形相关推荐

  1. opencv-python不规则多边形 ROI提取

    import cv2import numpy as np import joblibpts = [] # 用于存放点# 统一的:mouse callback function def draw_roi ...

  2. QT绘制多边形-----五边形

    *QT绘制多边形 今天学习qt绘制多边形的绘制 1.先创建一个新项目Application->Qt Widgets Application 2.在头文件.h添加: protected: //在保 ...

  3. 【opencv-python不规则多边形 ROI提取】

    opencv-python不规则多边形 ROI提取 import cv2import numpy as np import joblibpts = [] # 用于存放点# 统一的:mouse call ...

  4. css绘制不规则图形

    CSS绘制不规则图形 在实际开发中,经常会遇到绘制图形(图标)的需求,比如:箭头图表.不规则图形.规则图形: 常见方法 对于图形的实现,可以大体上分为几种做法 (1) 背景图片,请UI小姐姐帮你吧-- ...

  5. OpenGL(十一)——Qt OpenGL给多边形上色

    OpenGL(十一)--Qt OpenGL给多边形上色 一.前言 上篇文章介绍了绘制多边形的代码. 本篇介绍给多边形上色. 上篇的运行效果: 二.代码 上一篇中三角形和四边形的绘制方法.这一篇给三角形 ...

  6. html怎么设置不规则图形,CSS3绘制不规则图形的一些方法示例

    前言 CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中.本篇文章的目的是为大家开启它的冰山一角.我希望这篇文章能让你对不规则图形有一个初步的了解. 现在,我们已经可以使用CSS 3 常 ...

  7. Three.js - 绘制不规则图形(二十)

    Shape 形状 通过路径来绘制二维形状平面.简单理解就是在一个平面上用不规则的线连接成一个图形. 想在three.js中展示需要使用ExtrudeGeometry,ShapeGeometry来生成几 ...

  8. Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理

    Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理 目录 Unity UGUI 效果 之 UI 元素 多边形UI (例如雷 ...

  9. QML绘制圆角多边形(Canvas)

    QML绘制圆角多边形 import QtQuick 2.6 import QtQuick.Window 2.2Window {visible: truewidth: 500height: 500/** ...

  10. 绘制多边形_PS学习教程!教你绘制低多边形星空效果熊猫头像

    低多边形风格介于抽象与象形之间,是一种表现力很强的插画类型,用于LOGO的设计也未尝不可.它的绘制过程也非常简单,尤其在AI中,利用三角色块一个个拼缀而成即可,设计师要做的是对色彩的选择和控制,以便能 ...

最新文章

  1. linux docker 权限划分介绍 capabilities
  2. SQL-语句实现九九乘法表
  3. c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言
  4. C#面向对象名词比较(一)
  5. js三元判断html,JS 三元条件运算符
  6. python入门之函数结构第二关_Python入门二:函数
  7. PNG-的IDAT解析
  8. F - Sanae and Giant Robot
  9. 经典回忆Adobe Photoshop CS 2安装教程永久注册使用
  10. 【Spark NLP】第 6 章:信息检索
  11. 今年11月初阿里巴巴社招面试经历分享,Java工程师方向已拿offer【附学习方法】
  12. android服务无法启动,Android服务无法启动(Android service would't start)
  13. flutter 九宫格菜单_Flutter 仿微信/微博九宫格
  14. 关于M1版Macbook Pro 安装JDK 方法
  15. 恶人自有天收:如何能使僵尸网络Mirai的服务器宕机
  16. [iOS]-Category、Extension和关联对象
  17. 基金入门-指数基金、债券基金
  18. python高级特性是什么意思_Python高级特性
  19. 访问学者初到加拿大需要怎么做?
  20. 使用SQL语句删除数据表

热门文章

  1. NASA研制3D食物打印机:原料或取自昆虫
  2. axios.post发送小数据可以,但发送大数据出现Cross origin requests are only supported for protocol schemes: http, data,
  3. 关于Render在不同情况的用法
  4. 阿里的花名,是要抹去员工独立人格?
  5. mac OS系统中 设置ssh连接端口
  6. jira后台统计数据的一些sql(包含reopen计算,时效)
  7. 1449异常 mysql_连接MySQL时出现1449与1045异常解决办法
  8. js下载文件 阿星小栈
  9. 核只有单位元等价于映射是单射
  10. 连接超时与读取超时概述