在我的QT / QML应用程序中,下面的C++类可以完美地工作,并在QML视图中绘制一个由六个元素组成的简单多边形。
现在,我想要一个插值多边形;换句话说,我不想要一系列有边的线,而是一条没有任何边的连续线。为了做到这一点,我该如何转换我的类呢?
重要提示:我使用的不是图表,而是普通的图形;由于这个原因,我认为我在一些论坛上找到的QTSpline系列不是解决方案。但我显然对任何方式都持开放态度。
编辑:为了更好地解释我需要什么,我在这篇文章的末尾附上了一张图片。
#include "mydiagram.h"
#include <QPainter>
#include <string>
#include <iostream>
#include <QtCharts>
#include <QSplineSeries>
#include <QPoint>
using namespace QtCharts;
MyDiagram::MyDiagram(QQuickItem *parent): QQuickPaintedItem(parent)
{
}
void MyDiagram::paint(QPainter *painterMyDiagram) {
QBrush myBrush(QColor("transparent"));
QPen myPen(QColor("grey"), 3, Qt::DashDotLine);
painterMyDiagram->setBrush(myBrush);
painterMyDiagram->setPen(myPen);
painterMyDiagram->setRenderHint(QPainter::Antialiasing);
static const QPointF points[6] = {
QPointF(10.0, 80.0),
QPointF(20.0, 10.0),
QPointF(200.0, 30.0),
QPointF(300.0, 160.0),
QPointF(250.0, 250.0),
QPointF(10.0, 80.0)
};
painterMyDiagram->drawPolyline(points, 6);
}

发布于 2021-07-14 00:59:01
使用QPainterPath来绘制这样的东西,您的问题类似于this question
发布于 2021-07-14 19:03:49
最后,我使用Bezier算法,如下所述:
https://www.toptal.com/c-plus-plus/rounded-corners-bezier-curves-qpainter
不完全是我想要的(在这种情况下,这条线不会触及所有的边),但通过设置一个小的曲线因子,或多或少是相同的。无论如何,谢谢你的帮助。
https://stackoverflow.com/questions/68362075
复制相似问题