c++ Qt绘制传热云图

 

#ifndef THERMAL_COLOR_MAP_H
#define THERMAL_COLOR_MAP_H

#include <QVector>
#include <QColor>

class ThermalColorMap {
public:
    ThermalColorMap() {
        // 冷色调到热色调渐变
        colors << QColor(0, 0, 255)   // 冷蓝
               << QColor(0, 255, 255) //
               << QColor(0, 255, 0)   // 绿
               << QColor(255, 255, 0) //
               << QColor(255, 128, 0) //
               << QColor(255, 0, 0);  // 热红
    }

    QColor getColor(double value) const {
        if (colors.isEmpty()) return Qt::white;
        if (value <= 0) return colors.first();
        if (value >= 1) return colors.last();
        
        int index = static_cast<int>(value * (colors.size() - 1));
        QColor start = colors[index];
        QColor end = colors[index + 1];
        double ratio = value * (colors.size() - 1) - index;
        return QColor::fromRgbF(
            start.redF() * (1 - ratio) + end.redF() * ratio,
            start.greenF() * (1 - ratio) + end.greenF() * ratio,
            start.blueF() * (1 - ratio) + end.blueF() * ratio
        );
    }

private:
    QVector<QColor> colors;
};

#endif // THERMAL_COLOR_MAP_H

 

 

c83a86b5d1541079d81675ce8172dff7

 

 

 

 

 

 

 

 

 

#############################

posted @ 2025-12-16 23:42  西北逍遥  阅读(41)  评论(0)    收藏  举报