Colors 如何乘法十六进制色码?

Colors 如何乘法十六进制色码?,colors,hex,rgb,Colors,Hex,Rgb,我想将颜色从0x008000(绿色)更改为0x0000FF(蓝色)。 如果我乘以0x008000*256=0x800000(谷歌搜索充当计算器)。 我需要找到正确的乘数,这样结果将是0x0000FF 回答下面的人-我这样做是为了在pixi.js中的矩形上进行颜色转换 根据我收集的信息,RGB颜色代码分为3部分-红色、绿色和蓝色,比例为0-FF(十六进制),或0-255(十进制)。但是如何正确地乘法以获得所需的结果呢?如果您想要从一种颜色到另一种颜色的线性变化,我建议如下: int startCo

我想将颜色从0x008000(绿色)更改为0x0000FF(蓝色)。 如果我乘以0x008000*256=0x800000(谷歌搜索充当计算器)。 我需要找到正确的乘数,这样结果将是0x0000FF

回答下面的人-我这样做是为了在pixi.js中的矩形上进行颜色转换


根据我收集的信息,RGB颜色代码分为3部分-红色、绿色和蓝色,比例为0-FF(十六进制),或0-255(十进制)。但是如何正确地乘法以获得所需的结果呢?

如果您想要从一种颜色到另一种颜色的线性变化,我建议如下:

int startColor = 0x008000;
int endColor   = 0x0000FF;

int startRed   = (startColor >> 16) & 0xFF;
int startGreen = (startColor >>  8) & 0xFF;
int startBlue  =  startColor        & 0xFF;

int endRed, endGreen, endBlue; //same code

int steps = 24;
int[] result = new int[steps];

for(int i=0; i<steps; i++) {
    int newRed = ( (steps - 1 - i)*startRed + i*endRed ) / (steps - 1);
    int newGreen, newBlue; //same code
    result[i] = newRed << 16 | newGreen << 8 | newBlue;
}
int startColor=0x008000;
int-endColor=0x0000FF;
int startRed=(startColor>>16)和0xFF;
int startGreen=(startColor>>8)&0xFF;
int startBlue=startColor&0xFF;
内部为红色、绿色、蓝色//相同代码
int步数=24;
int[]结果=新的int[步骤];
对于(int i=0;i>8)&0xFF;
var startBlue=startColor&0xFF;
变量endRed=(endColor>>16)和0xFF;
var endGreen=(endColor>>8)&0xFF;
var endBlue=endColor&0xFF;
var阶数=24;
var结果=[];
对于(变量i=0;ivar comb=newRed我想你需要更好地解释一下你需要什么。为什么一半强度乘以256的绿色会变成高强度蓝色?我的阅读能力不好,你能提供一个问题的实际例子吗?除以256或向右移动8位我在pixi.js中创建动画,分24步我想改变正方形填充color从绿色到蓝色。256只是一个随机数。@AsadAli-这样做,蓝色组件不是会从低值到高值循环几次吗?这可能是一个奇怪的过渡。我添加了另一个cooments并对它们进行了注释(yo dawg)以避免混淆。嗯,我希望您替换“相同的代码”使用相同代码的注释只重命名了变量?添加了编辑,但似乎没有保存。是的,我只是更改了几个变量名称,控制台给我[0,0,0…],数组中的所有元素都是零。i/z已修复。好的,我将打开编辑器并查看它,但我想告诉你:JS不是我的专长。控制台:0->32768用于每次迭代
var startColor = 0x008000;
var endColor = 0x0000FF;
var startRed = (startColor >> 16) & 0xFF;
var startGreen = (startColor >> 8) & 0xFF;
var startBlue = startColor & 0xFF;
var endRed = (endColor >> 16) & 0xFF;
var endGreen = (endColor >> 8) & 0xFF;
var endBlue = endColor & 0xFF;
var steps = 24;
var result = [];
for (var i = 0; i < steps; i++) {
var newRed = ((steps - 1 - i) * startRed + i * endRed) / (steps - 1);
var newGreen = ((steps - 1 - i) * startGreen + i * endGreen) / (steps - 1);
var newBlue = ((steps - 1 - i) * startBlue + i * endBlue) / (steps - 1);
var comb = newRed << 16 | newGreen << 8 | newBlue;
console.log(i + " -> " + comb.toString(16));
result.push(comb);
}
console.log(result);