2017-10-12 2 views
0

Ich habe ein Problem, wo ich einen Strahl aus einer Quelle zeichnen muss. Bei der Quelle sollte die Intensität am stärksten sein und sollte mit der Entfernung, die meine Xaxis ist, abnehmen.Wenn ich blaue Farbe verwende, um meinen Strahl zu zeichnen, sollte er hellblau sein am Ursprung und sollte mit Abstand verdunkeln.Wie ändert man die Intensität der Kurvenfarbe in Qcustomplot in Bezug auf die x-Achse?

Ich habe eine QCpcurve an QCustomplot angehängt.

Es gibt zwei Vektoren sagen, X und Y, die I

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

Problem plotten ist, dass, wie die Farbintensität mit zunehmendem Abstand zu ändern.

Bitte helfen

+0

zeigen Sie Ihren Code. – eyllanesc

+0

Sie können ein Bild anzeigen, was Sie erhalten möchten. – eyllanesc

+0

@eyllanesc Ich habe meinen Beitrag bearbeitet. – Aman

Antwort

2

Sie einen Farbverlauf auf QPen einstellen können, indem Sie die von Ihnen gewünschte Aussehen anzeigt.

QPen :: QPen (const QBrush & Bürste, qreal Breite, Qt :: Penstyle style = Qt :: Solidline, Qt :: PenCapStyle cap = Qt :: SquareCap, Qt :: PenJoinStyle Verbinden = Qt :: BevelJoin)

Konstruiert einen Stift mit dem angegebenen Pinsel, Breite, Stift-Stil, Cap-Stil und Join-Stil.

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(); 
} 

enter image description here

+0

@eyllansec Danke Kumpel. Deine Lösung ist perfekt. – Aman

Verwandte Themen