Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: paff от Октябрь 27, 2013, 17:48



Название: Магия цвета или помогите понять где я допустил ошибку )))
Отправлено: paff от Октябрь 27, 2013, 17:48
Здравствуйте форумчане.
Есть проблема. Суть - при рисовании (нужен кружок зеленого или красного цвета) не отображается эллипс нужного цвета, любой другой пожалуйста, а зеленый и красный нет(((
Код представляю, QT 3.3.3!!!
Код:
void MyLabel::drawRam( QPainter *pp, QColor cc, QColor ccc )
{
    pp->save();
    pp->setPen( QPen( ccc, 6) );
    pp->setBrush( NoBrush );
    pp->drawRect( rx, ry, 210, 70 );
    pp->drawRect(rx, ry, 120, 35);
    pp->drawRect(rx + 120, ry, 90, 35);
    pp->drawRect(rx, ry + 35, 120, 35);
    pp->drawRect(rx + 120, ry + 35, 90, 35);
    pp->drawRect(rx, ry + 70, 210, 35);
    pp->drawLine(rx + 160, ry + 70, 160, 106);
   
    pp->setPen( QPen( cc, 2, Qt::SolidLine) );
    pp->drawRect( rx, ry, 210, 70 );//ПУОПЧОБС ТБНЛБ
    pp->drawRect(rx, ry, 120, 35);
    pp->drawRect(rx + 120, ry, 90, 35);
    pp->drawRect(rx, ry + 35, 120, 35);
    pp->drawRect(rx + 120, ry + 35, 90, 35);
    pp->drawRect(rx, ry + 70, 210, 35);
    pp->drawLine(rx + 160, ry + 70, 160, 106);
    /* Собственно тут рисование нужного круга*/
    pp->setPen( QPen( Qt::blue, 2, Qt::SolidLine ));
    pp->setBrush( Qt::red, Qt::SolidPattern ) );
    pp->drawEllipse( 175, 75, 25 ,25);

    drawColoredText( (char*)"Tahoma", 16, rx + 5, ry + 20, QString(tr("дП лф N")), pp, cc, ccc);
    drawColoredText( (char*)"Tahoma", 16, rx + 5, ry + 50, QString(tr("дП РХОЛФБ")), pp, cc, ccc);
    drawColoredText( (char*)"Tahoma", 16, rx + 5, ry + 65, QString(tr("ОБЪОБЮЕОЙС")), pp, cc, ccc);
    drawColoredText( (char*)"Tahoma", 15, rx + 5, ry + 86, QString(tr("рТЙЪОБЛ")), pp, cc, ccc);
    drawColoredText( (char*)"Tahoma", 15, rx + 5, ry + 100, QString(tr("ОБИПЦДЕОЙС Ч ър")), pp, cc, ccc);
    drawColoredText( (char*)"Tahoma", 16, rx + 130, ry + 25, ktKm_d, pp, cc, ccc);
    drawColoredText( (char*)"Tahoma", 16, rx + 135, ry + 60, pnKm_d, pp, cc, ccc);
    pp->restore();
}
Всем откликнувшимся огромное СПС!!!


Название: Re: Магия цвета или помогите понять где я допустил ошибку )))
Отправлено: gil9red от Октябрь 27, 2013, 21:55
Как я понимаю, вы рисуете эллипс этой функцией:
Код:
void QPainter::drawEllipse ( int x, int y, int w, int h )

Функция рисует эллипс, заданный прямоугольником.

Проверьте:
Код:
pp->drawEllipse( 175, 75, 175 + 25 , 75 + 25);

PS.
Посмотрел код, и не увидел ничего более подозрительного :)


Название: Re: Магия цвета или помогите понять где я допустил ошибку )))
Отправлено: paff от Октябрь 27, 2013, 23:04
Как я понимаю, вы рисуете эллипс этой функцией:
Код:
void QPainter::drawEllipse ( int x, int y, int w, int h )

Функция рисует эллипс, заданный прямоугольником.

Проверьте:
Код:
pp->drawEllipse( 175, 75, 175 + 25 , 75 + 25);

PS.
Посмотрел код, и не увидел ничего более подозрительного :)

Спасибо за потраченное на меня время ))) Проблема состоит в том, что если указать цвет кисти или карандаша отличный от зеленого или красного, то рисует все нормально, но! если указать именно эти цвета, а они нужны, то просто пусто и все. (((


Название: Re: Магия цвета или помогите понять где я допустил ошибку )))
Отправлено: Old от Октябрь 27, 2013, 23:10
Может дело в альфаканале?
Можно попробовать немного изменить цвет? Т.е. вместо красного (255,0,0) использовать (255,1,1) и посмотреть что получиться.


Название: Re: Магия цвета или помогите понять где я допустил ошибку )))
Отправлено: deMax от Октябрь 31, 2013, 08:57
На Qt4.8.4 работает, вы бы выкладывали компилирующийся код
pp->setBrush( QBrush(Qt::red, Qt::SolidPattern ) );
pp->setBrush( Qt::NoBrush );

Попробуйте задавать цвет через QColor(255,0,0) вместо Qt::red, еще можно QColor::fromRgb(255,0,0) или даже QColor::fromRgba(255,0,0,255)