Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: SektorCT от Июль 09, 2016, 13:32



Название: Нарисовать кольца с помощью paint
Отправлено: SektorCT от Июль 09, 2016, 13:32
Всем привет.
У меня с помощью paint рисуются круги, с начала drawEllipse а потмо поверх drawPie который пересчитывается в зависимости от времени и перерисовывается.
Я пытаюсь это реализовать путем не зарисовки кругов а именно кольцами. То есть центр не будет зарисовыватся а только так сказать границы.
Это то что у меня реализованно.
Код:
void CircleTimer::paint(QPainter *painter)
{
    //Рисуем обьект таймер
    QBrush  brush(backgroundColor_);
    QBrush  brushActive(borderActiveColor_);
    QBrush  brushNonActive(borderNonActiveColor_);
    QBrush  brushHours(borderHoursColor_);
    QBrush  brushMinutes(borderMinutesColor_);
    QBrush  brushSpacer(spacerCircleColor_);

    painter->setPen(Qt::NoPen);
    painter->setRenderHints(QPainter::Antialiasing, true);

    painter->setBrush(brushNonActive);
    painter->drawEllipse(boundingRect().adjusted(1,1,-1,-1));

    painter->setBrush(brushHours);      //Рисуем круг для отображения часов
    painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, angleOfRotationFull_ * 16);

    painter->setBrush(brushNonActive);
    painter->drawEllipse(boundingRect().adjusted(10,10,-10,-10));

    painter->setBrush(brushSpacer);     //Рисуем круг для отображения промежутка между активными облостями
    painter->drawPie(boundingRect().adjusted(10, 10, -10, -10), 90 * 16, angleOfRotation_ * 16);

    painter->setBrush(brushNonActive);
    painter->drawEllipse(boundingRect().adjusted(14,14,-14,-14));

    painter->setBrush(brushMinutes);      //Рисуем круг для отображения минут
    painter->drawPie(boundingRect().adjusted(14, 14, -14, -14), 90 * 16, angleOfRotation_ * 16);

    painter->setBrush(brush);   //Основной круг, он рисуется поверх остальных
    painter->drawEllipse(boundingRect().adjusted(18, 18, -18, -18));
}

А здесь косочек кода который мне посоветовали но с ним ничего я в реализвации а точнее замене не смог сделать.
Код:
painter->setBrush(Qt::NoBrush);
painter->drawPie(boundingRect().adjusted(14, 14, -14, -14), 90 * 16, angleOfRotation_ * 16);

painter->setBrush(Qt::NoBrush);
painter->setPen(backgroundColor_);
painter->setRenderHints(QPainter::Antialiasing, true);
painter->drawEllipse(boundingRect().adjusted(18, 18, -18, -18));

Буду благодарен за помощь с этим вопросом.


Название: Re: Нарисовать кольца с помощью paint
Отправлено: Bepec от Июль 09, 2016, 21:13
А что не получается то?


Название: Re: Нарисовать кольца с помощью paint
Отправлено: SektorCT от Июль 09, 2016, 22:25
А что не получается то?

Я не пойму как обходится если есть одни круг
painter->setBrush(brushNonActive);
painter->drawEllipse(boundingRect().adjusted(14,14,-14,-14));

Теперь мы по верх него рисуем другой
painter->setBrush(brushMinutes);      //Рисуем круг для отображения минут
painter->drawPie(boundingRect().adjusted(14, 14, -14, -14), 90 * 16, angleOfRotation_ * 16);

И в зависимости от пересчета времени вторйо перерисовывается и мы поулчаем эфект.

А как этого добится если не кругами рисовать? Ну и само собою толщину получить?
Так как в моем примере что я накидал там мы ширину получаем за счет нарисованного сверху круга диаметрмо меньшего размера.


Название: Re: Нарисовать кольца с помощью paint
Отправлено: Bepec от Июль 09, 2016, 23:09
Не пойму чего вы хотите.
Что вы в результате хотите то получить?


Если не хотите рисовать кругами, рисуйте попиксельно. Но это в любом случае получится круг как бы.


Название: Re: Нарисовать кольца с помощью paint
Отправлено: Racheengel от Июль 09, 2016, 23:13
Вот это, похоже, автору надо: https://sourceforge.net/projects/qroundprogressbar/


Название: Re: Нарисовать кольца с помощью paint
Отправлено: SektorCT от Июль 10, 2016, 00:22
Вот это, похоже, автору надо: https://sourceforge.net/projects/qroundprogressbar/

Да, вот думаю что Donut Style или Line Style это как раз то что нужно. Только мне нужно получается 2 получить.
Вот кидаю картинку, тут видно чт оя хочу поулчить.
http://picpaste.com/_______________________________2016-07-07_17-06-37-5TgPriCK.png (http://picpaste.com/_______________________________2016-07-07_17-06-37-5TgPriCK.png)


Название: Re: Нарисовать кольца с помощью paint
Отправлено: Racheengel от Июль 10, 2016, 01:37
ну там исходники есть, так что аналогично делайте второй кружок.