如何插入 HSV 颜色?

How to interpolate a HSV color?

我正在 win32 api 中创建一个应用程序,它将使用进度条。这个进度条,应该改变它的颜色。从红色(左端)到绿色(右端),中间有一些黄色。

我搜索了一下,发现我应该使用 HSV 来实现这一点。我只是不知道怎么办?我在 this link 中找到了两个函数,用于将颜色从 RGB 转换为 HSV,然后再转换回来。

但是颜色已经转换成HSV了怎么办?

RGB 坐标一样,HSV 坐标在三维 space 中定义一个点。

您可能会找到一个 轨迹 从一个点(x0,一种颜色)到第二个(x1),公式如下:

x = x0 + alpha * (x1-x0)

alpha 的变化形式为 0.0 到 1.0

您可以同时对所有三个组件执行此操作。

使用 HSV 轨迹 从绿色到红色 space 您将主要修改 H(色调)值。如果你想在你的路径中间看到一些黄色(而不是紫罗兰色),你需要定义第二种甚至第三种颜色然后走

green -> yellow -> red 


编辑:示例

int hue0 = 0; // red
int hue2 = 120; // green

// find 100 colors between red and green
for(double alpha = 0; alpha <= 1.0; alpha += 0.01)
{
     hueX = hue0 + alpha * (hue1 - hue0);
     // same for value, saturation:
     // valX = val0 + alpha * (val1 - val0)
     // ...
     // plot this color
}