生成一个颜色列表,从蓝色到红色,0%到100%。

3
我想创建一个颜色列表,红-黄-绿-蓝,并在100个范围内混合。有人有这方面的经验吗?
编辑:实际上是RGB。任何编程语言都可以。我只需要算法。

1
是的!我推荐调色板水粉颜料,它们最容易混合和溶于水。在我的经验中,油画颜料是最准确和可预测的混合颜料,但是松节油的气味可能会非常令人讨厌。 - Pekka
如果不够清楚,我的意思是你至少应该指定一个编程语言或平台,一个颜色空间(RGB?HSV?CMYK?),并添加一些更相关的标签:P - Pekka
4个回答

3
一个简单的嵌套RGB循环无法生成你所需的红黄绿蓝渐变色。如果这确实是你想要的,那么你应该了解一些关于色轮的知识:
                    red
                     |
           magenta__ | __yellow
                    \|/
                  __/|\__
              blue   |   green
                     |
                    cyan

这实际上是一个HSV颜色轮,非常适合理解加法混合的颜色。根据这个颜色轮,把红色和绿色混合可以得到黄色。所以,对于你的渐变:

// in javascript:
function cssColor (r, g, b) {
    return 'rgb('+r+','+g+','+b+')';
}

var colors = [];
// Start with solid red:
var r = 255;
var g = 0;
var b = 0;
// From red to yellow:
for (var g=0;g<=255;g++)  colors.push(cssColor(r,g,b));
// From yellow to green:
for (var r=255;r>=0;r--) colors.push(cssColor(r,g,b));
// From green to blue:
for (var b=0;b<=255;b++,g--)  colors.push(cssColor(r,g,b));

这将给您一个包含768种颜色的数组。如果您使用每八个颜色,您应该得到大约100种颜色的数组:

var subColors = [];
for (var i=0;i<colors.length;i++) {
    if (i%8 == 0) subColors.push(colors[i]);
}

无论如何,使用这些知识,你可以得到任何想要的渐变效果。

2
这应该可以做到,提供所有大约1600万种颜色。
int[] colors;

for (int r = 0; i <= 255; i++)
{
    for (int g = 0; g <= 255; g++)
    {
        for (int b = 0; b <= 255; b++)
        {
            colors[] = rgb2int(r, g, b);
        }
    }
}

rgb2int(int red, int green, int blue)
{
    return (red << 16) + (green << 8) + blue;
}

2

1

3个嵌套循环。 在R上从1到n循环一次 在g上从1到n循环一次 在b上从1到n循环一次

应该给你3^n或者更多的颜色 -


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接