QCustomPlot QCPItemEllipse позиция

У меня есть график QCustomPlot с центром (0,0), я хочу добавить элемент эллипса вокруг всех данных на графике, но там я могу только установить верхнюю левую и нижнюю правую позиции эллипса, это показывает почти в центр графика, но он немного смещен, потому что я не в состоянии установить центр на эллипсе, так как центр не является точкой привязки

Кто-нибудь знает, как я мог бы установить центр моего элемента эллипса в (0,0)?

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

0

Решение

Человек, положение центра эллипса определяется его верхней левой и нижней правой точками.

Например. center.x == (topLeft.x + bottomRight.x)/2 а также center.y == (topLeft.y + bottomRight.y)/2, Вот как эллипсы работают в математике :).

В вашем коде центр будет в (0,0), если (lowestX + hightX) == 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);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]