0

我有一个中心 (0,0) 的 QCustomPlot 图表我想在图表上的所有数据周围添加一个椭圆项,但我只能设置椭圆的左上角和右下角位置,这几乎显示在图的中心,但它有点偏离,因为我无法将中心设置为椭圆,因为中心不是一个位置,它是一个锚

有谁知道我如何将椭圆项目的中心设置为(0,0)?

    QCPItemEllipse *ellipse = new QCPItemEllipse(ui->customPlot);
    ellipse->setAntialiased(true);
    ellipse->topLeft->setCoords(lowestX, highestY);
    ellipse->bottomRight->setCoords(highestX, lowestY);
4

1 回答 1

1

伙计,椭圆中心的位置是由它的左上角和右下角点决定的。

例如center.x == (topLeft.x + bottomRight.x)/2center.y == (topLeft.y + bottomRight.y)/2。这就是椭圆在数学中的工作方式:)。

(lowestX + hightX) == 0在您的代码中,如果& ,中心将位于 (0,0) 中(lowestY + hightY) == 0

或者我没听懂你在说什么?

如果您想以简单的方式移动椭圆的中心,您可以创建从QCPItemEllipse字段派生的类,QCPItemTracer *mCenterTracer并在构造函数中使用以下内容:

mCenterTracer->setStyle(QCPItemTracer::tsNone);

topLeft->setParentAnchor(mCenterTracer->position);
bottomRight->setParentAnchor(mCenterTracer->position);

topLeft->setCoords(-xRadius/2.0, -yRadius/2.0);
bottomRight->setCoords(xRadius/2.0, yRadius/2.0);

因此移动中心的方法(不改变半径)将如下所示:

void FreakingEllipse::moveCenter(double x, double y) {
    mCenterTracer->position->setCoords(x, y);
}

顺便说一句,如果您希望椭圆具有以像素为单位的恒定半径,您可以添加以下内容,而它的中心仍然坚持绘图坐标:

topLeft->setType(QCPItemPosition::ptAbsolute);
bottomRight->setType(QCPItemPosition::ptAbsolute);
于 2013-11-01T16:12:55.093 回答