思路:添加关键值key,然后RGB3个分量分别插值
#ifndef GRADCOLOR_HPP
#define GRADCOLOR_HPP
#include <map>
#include <vector>
class crgb{
public:
crgb(){
crgb(0,0,0,0);
}
crgb(int k, unsigned char _r, unsigned char _g, unsigned char _b):
keyval(k), r(_r), g(_g), b(_b){
}
public:
int keyval;
unsigned char r,g,b;
};
class gradcolor{
public:
static crgb getColor(int val, crgb* v, int n){
float gainr,gaing,gainb;
for (int i = 0; i < n - 1; ++i) {
if (val >= v[i].keyval && val <= v[i+1].keyval){
gainr = double(v[i + 1].r - v[i].r) / double(v[i + 1].keyval - v[i].keyval);
gaing = double(v[i + 1].g - v[i].g) / double(v[i + 1].keyval - v[i].keyval);
gainb = double(v[i + 1].b - v[i].b) / double(v[i + 1].keyval - v[i].keyval);
return crgb(val, v[i].r + gainr, v[i].g + gaing, v[i].b + gainb);
}

本文介绍了如何通过添加关键值key,并使用RGB分量进行线性插值,实现gradcolor类中的颜色渐变功能。实例展示了crgb类和gradcolor类的使用,以及getColor函数根据输入值从预定义颜色区间中获取对应颜色。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



