QT:绘图
一.QPainter
二.QGraphics
QPainter能够实现绘制二维图形,适合用于绘制复杂度不高的固定图形,并且不能实现图项的选择、编辑、拖放、修改等交互功能
对于需要绘制大量的、需要交互的图形,可以使用Graphics View Item
QGraphicsEllipsetItem 椭圆
QGraphicsLineItem 直线
QGraphicsPathItem 路径
QGraphicsPixmapItem 图像
QGraphicsPolygonItem 多边形
QGraphicsRectItem 矩形
QGraphicsSimpleTextItem 简单文本
QGraphicsTextItem 文本浏览
QGraphicsView 坐标系
#include <QApplication> #include <QGraphicsScene> #include <QGraphicsView> #include <QGraphicsRectItem> #include "math.h" int main(int argc, char* argv[]) { QApplication a(argc, argv); QGraphicsScene scene; //定义一个场景,设置背景色为红色 scene.setBackgroundBrush(Qt::red); QPen pen; //定义一个画笔,设置画笔颜色和宽度 pen.setColor(QColor(0, 160, 230)); pen.setWidth(10); QGraphicsRectItem* m_rectItem = new QGraphicsRectItem(); //定义一个矩形图元 m_rectItem->setRect(0, 0, 80, 80); m_rectItem->setPen(pen); m_rectItem->setBrush(QBrush(QColor(255, 0, 255))); m_rectItem->setFlag(QGraphicsRectItem::ItemIsMovable); QGraphicsLineItem* m_lineItem = new QGraphicsLineItem(); //定义一个直线图元 m_lineItem->setLine(QLineF(0, 0, 100, 100)); m_lineItem->setPen(pen); m_lineItem->setFlag(QGraphicsItem::ItemIsMovable); QGraphicsPathItem* m_pathItem = new QGraphicsPathItem(); //定义一个路径图元 QPainterPath path; path.moveTo(90, 50); for (int i = 1; i < 5; ++i){ path.lineTo(50+40*cos(0.8*i*M_PI), 50+40*sin(0.8*i*M_PI)); } path.closeSubpath(); m_pathItem->setPath(path); m_pathItem->setPen(pen); m_pathItem->setFlag(QGraphicsItem::ItemIsMovable); QGraphicsPolygonItem* m_polygonItem = new QGraphicsPolygonItem(); //定义一个多边形图元 QPolygonF polygon; polygon << QPointF(-100.0, -150.0) << QPointF(-120.0, 150.0) << QPointF(320.0, 160.0) << QPointF(220.0, -140.0); m_polygonItem->setPolygon(polygon); m_polygonItem->setPen(pen); m_polygonItem->setFlag(QGraphicsItem::ItemIsMovable); scene.addItem(m_rectItem); //把矩形图元添加到场景 scene.addItem(m_lineItem); //把直线图元添加到场景 scene.addItem(m_pathItem); //把路径图元添加到场景 scene.addItem(m_polygonItem); //把多边形图元添加到场景 QGraphicsView view(&scene); //定义一个视图,并把场景添加到视图 view.resize(1024, 768); view.show(); return a.exec(); }
三.pyqtgraph
import pyqtgraph as pg import numpy as np app = pg.mkQApp() x = np.linspace(0, 6*np.pi, 100) y = np.sin(x) p = pg.plot(x, y, title = u'最简单绘图例子', left = 'Amplitude / v', bottom = 't / s') p.setLabels(title= 'y = sin(x)') app.exec_()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)