как изменить интенсивность цвета кривой в Qcustomplot относительно оси x?

У меня проблема, когда я должен построить луч из какого-то источника. В источнике интенсивность должна быть максимальной и должна уменьшаться с расстоянием, которое является моей осью X. Если я использую синий цвет для построения своего луча, то он должен быть светло-голубым в начале координат. и должен темнеть с расстоянием.

Я прикрепил QCpcurve к QCustomplot.

Есть два вектора, скажем, X и Y, которые я должен построить

Curve.setpen(blue);
Curve.setdata(X,Y);

Проблема в том, как изменить интенсивность цвета по мере увеличения расстояния.

Пожалуйста помоги


person Aman    schedule 12.10.2017    source источник
comment
покажи свой код.   -  person eyllanesc    schedule 12.10.2017
comment
Вы можете отобразить изображение того, что хотите получить.   -  person eyllanesc    schedule 12.10.2017
comment
@eyllanesc Я отредактировал свой пост.   -  person Aman    schedule 12.10.2017


Ответы (1)


Вы можете установить цветовой градиент для QPen, отобразив желаемый вид.

QPen::QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin)

Создает перо с заданными кистью, шириной, стилем пера, стилем колпачка и стилем соединения.

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QCustomPlot *customplot = new QCustomPlot;
    customplot->setWindowTitle("Gradient Color");
    customplot->resize(640, 480);
    QCPCurve curve(customplot->xAxis, customplot->yAxis);
    QVector<double> x, y;
    for(int i=0; i < 1000; i++){
        double x_ = qDegreesToRadians(i*1.0);
        x << x_;
        y << qCos(x_)*qExp(-0.2*x_);
    }
    customplot->xAxis->setRange(0, qDegreesToRadians(1000.0));
    customplot->yAxis->setRange(-1, 1);

    QLinearGradient gradient(customplot->rect().topLeft(), customplot->rect().topRight());
    gradient.setColorAt(0.0, QColor::fromRgb(14, 11, 63));
    gradient.setColorAt(1.0, QColor::fromRgb(58, 98, 240));
    QPen pen(gradient, 5);
    curve.setPen(pen);

    curve.setData(x, y);
    customplot->show();

    return a.exec();
}

введите здесь описание изображения

person eyllanesc    schedule 12.10.2017
comment
@eyllansec Спасибо, приятель. Ваше решение идеально. - person Aman; 12.10.2017