如何在代码中使用 Qt QColormap?

How to use Qt QColormap in code?

我想实现这样的目标。

我查看了 Qt QColormap,但没有获得足够的信息来对其进行编码。如果有人知道如何做到这一点。请分享代码片段。

更多的是关于颜色模型的问题,然后是 Qt,但基本上你试图在保持饱和度的同时围绕 HSL color model 的边缘画一个完整的圆。

要在 Qt 中生成类似的东西,您将使用渐变画笔;因为我们想要连续混合,所以我使用了 QLinearGradient。如果你看上面的色轮,你会注意到红色在 0 度,绿色在 120 度,蓝色在 240 度。 QLinearGradient 的工作范围是 0-1,因此这将分别转换为 0、1/3、2/3。我们还需要添加最终停止点,这将完成渐变回到红色。

我添加了一些 alpha 通道来降低色调,以便您进行试验;最终代码将如下所示:

class ColorScale : public QWidget {
    Q_OBJECT
public:
    using QWidget::QWidget;

protected:
    void paintEvent(QPaintEvent *event) override {
        QPainter painter(this);
        painter.setOpacity(0.9);
        painter.setRenderHint(QPainter::HighQualityAntialiasing);
        QLinearGradient gradient(0, 0, 0, height());
        QGradientStops stops;
        stops << QGradientStop(0, Qt::red);
        stops << QGradientStop(1.0/3, Qt::blue);
        stops << QGradientStop(2.0/3, Qt::green);
        stops << QGradientStop(1, Qt::red);

        gradient.setStops(stops);

        painter.fillRect(rect(), gradient);
    }
};

它产生这个:

您可以通过调用 QPainter::drawText 添加标签。