Здравствуйте! Возникла такая проблема. Надо реализовать вращение такой фигуры
Набросал по быстрому код, изображение вертится, но первый сектор постепенно увеличивается и покрывает собой весь круг.
Как это исправить?
float radius2;
if (width() > height())
radius2 = (height() - 100) / 2;
else
radius2 = (width() - 100) / 2;
QPainter painter(this);
QPointF center = QPointF(width() / 2, height() / 2);
QRectF rect = QRectF(center.x() - radius2, center.y() - radius2, radius2*2, radius2*2);
qreal fAngle = (2 * 180 )/8;
qreal fAngle2 = fAngle;
for (int i = 0; i < 8; i++) {
if (i % 2 == 0) {
painter.setBrush(QBrush(Qt::green));
painter.drawPie(rect,fAngle*16*i + (angle/180.)*M_PI,fAngle2*16 + (angle/180.)*M_PI);
}
else {
painter.setBrush(QBrush(Qt::blue));
painter.drawPie(rect,fAngle*16*i + (angle/180.)*M_PI,fAngle2*16+(angle/180.)*M_PI);
}
}
angle изначально равно 0, увеличивается в этом событии
void MainWindow::timerEvent(QTimerEvent *event) {
angle += 20;
repaint();
}
Второй угол в функции drawPie это угол в основании сектора, а не угол "до которого рисовать", как ты, вероятно, предположил. см. http://doc.qt.io/qt-4.8/qpainter.html#drawPie . Соответственно, не нужно его увеличивать со временем.
painter.drawPie(rect,fAngle*16*i + (angle/180.)*M_PI,fAngle2*16);
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости