Здравствуйте! Возникла такая проблема. Надо реализовать вращение такой фигуры
Набросал по быстрому код, изображение вертится, но первый сектор постепенно увеличивается и покрывает собой весь круг.
Как это исправить?
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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Решите пж Дано число nЧи вірно, що це число містить рівно 3 однакових цифри
Рассмотрим такой вариант реализации постфиксного оператора инкрементированияПочему требуется возвращать именно const T, а не T? Такой вариант...
Добрый день! Помогите, пожалуйста реализовать функцию квадратного корня из числа через ряд Тейлора на с++: Вот некоторые похожие рабочие...