QT绘制不规则多边形
第一种:直接在界面上绘制
在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绘制不规则多边形相关推荐
- opencv-python不规则多边形 ROI提取
import cv2import numpy as np import joblibpts = [] # 用于存放点# 统一的:mouse callback function def draw_roi ...
- QT绘制多边形-----五边形
*QT绘制多边形 今天学习qt绘制多边形的绘制 1.先创建一个新项目Application->Qt Widgets Application 2.在头文件.h添加: protected: //在保 ...
- 【opencv-python不规则多边形 ROI提取】
opencv-python不规则多边形 ROI提取 import cv2import numpy as np import joblibpts = [] # 用于存放点# 统一的:mouse call ...
- css绘制不规则图形
CSS绘制不规则图形 在实际开发中,经常会遇到绘制图形(图标)的需求,比如:箭头图表.不规则图形.规则图形: 常见方法 对于图形的实现,可以大体上分为几种做法 (1) 背景图片,请UI小姐姐帮你吧-- ...
- OpenGL(十一)——Qt OpenGL给多边形上色
OpenGL(十一)--Qt OpenGL给多边形上色 一.前言 上篇文章介绍了绘制多边形的代码. 本篇介绍给多边形上色. 上篇的运行效果: 二.代码 上一篇中三角形和四边形的绘制方法.这一篇给三角形 ...
- html怎么设置不规则图形,CSS3绘制不规则图形的一些方法示例
前言 CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中.本篇文章的目的是为大家开启它的冰山一角.我希望这篇文章能让你对不规则图形有一个初步的了解. 现在,我们已经可以使用CSS 3 常 ...
- Three.js - 绘制不规则图形(二十)
Shape 形状 通过路径来绘制二维形状平面.简单理解就是在一个平面上用不规则的线连接成一个图形. 想在three.js中展示需要使用ExtrudeGeometry,ShapeGeometry来生成几 ...
- Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理
Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理 目录 Unity UGUI 效果 之 UI 元素 多边形UI (例如雷 ...
- QML绘制圆角多边形(Canvas)
QML绘制圆角多边形 import QtQuick 2.6 import QtQuick.Window 2.2Window {visible: truewidth: 500height: 500/** ...
- 绘制多边形_PS学习教程!教你绘制低多边形星空效果熊猫头像
低多边形风格介于抽象与象形之间,是一种表现力很强的插画类型,用于LOGO的设计也未尝不可.它的绘制过程也非常简单,尤其在AI中,利用三角色块一个个拼缀而成即可,设计师要做的是对色彩的选择和控制,以便能 ...
最新文章
- linux docker 权限划分介绍 capabilities
- SQL-语句实现九九乘法表
- c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言
- C#面向对象名词比较(一)
- js三元判断html,JS 三元条件运算符
- python入门之函数结构第二关_Python入门二:函数
- PNG-的IDAT解析
- F - Sanae and Giant Robot
- 经典回忆Adobe Photoshop CS 2安装教程永久注册使用
- 【Spark NLP】第 6 章:信息检索
- 今年11月初阿里巴巴社招面试经历分享,Java工程师方向已拿offer【附学习方法】
- android服务无法启动,Android服务无法启动(Android service would't start)
- flutter 九宫格菜单_Flutter 仿微信/微博九宫格
- 关于M1版Macbook Pro 安装JDK 方法
- 恶人自有天收:如何能使僵尸网络Mirai的服务器宕机
- [iOS]-Category、Extension和关联对象
- 基金入门-指数基金、债券基金
- python高级特性是什么意思_Python高级特性
- 访问学者初到加拿大需要怎么做?
- 使用SQL语句删除数据表
热门文章
- NASA研制3D食物打印机:原料或取自昆虫
- axios.post发送小数据可以,但发送大数据出现Cross origin requests are only supported for protocol schemes: http, data,
- 关于Render在不同情况的用法
- 阿里的花名,是要抹去员工独立人格?
- mac OS系统中 设置ssh连接端口
- jira后台统计数据的一些sql(包含reopen计算,时效)
- 1449异常 mysql_连接MySQL时出现1449与1045异常解决办法
- js下载文件 阿星小栈
- 核只有单位元等价于映射是单射
- 连接超时与读取超时概述