⑴ 图形图像软件中对两个色彩进行线性渐变的算法是什么是以AB两点色彩(假设为rgb制)的三个参数以及
会java吗?这一段我用于生成渐变色的代码,算法挺简单的,手机能看得清楚吗?
privatevoidaddTwoColor(ColorbeginColor,ColorendColor,intstep){
//用浮点数组存储RGB3色,java中颜色值是0-255
float[]begin=beginColor.getRGBColorComponents(null);//开始的颜色
float[]end=endColor.getRGBColorComponents(null);//介绍的颜色
//这段代码是生成两个颜色之间step数量个渐变色
//没明白你的问题的后半部分,猜测也是要求生成两个颜色之间
//的N个渐变色,即使我理解错,应该问题不大,反正算法简单,
//你一看也就明白
for(intj=0;j<step;j++){
floatf[]=newfloat[3];
for(inti=0;i<3;i++){
//这个就是算法,RGB三色都按同样的算法
f[i]=begin[i]-(begin[i]-end[i])*j/step;
}
Colorcolor=newColor(f[0],f[1],f[2]);
this.colorList.add(color);
}
}
⑵ 颜色渐变算法
//r1, r2 是红色 从r1 到r2.
//g: 绿色 from g1 to g2
//b: from b1 to b2
//从颜色 rgb(r1, g1, b1) 到 rgb(r2, g2, b2) 渐变
void FillFluentRect(HDC hDC, RECT rect, byte r1, byte g1, byte b1, byte r2, byte g2, byte b2)
{
int iWidth = rect.right - rect.left;
int iHeight = rect.bottom - rect.top;
short rDif = r2 - r1;
short gDif = g2 - g1;
short bDif = b2 - b1;
for(int i = 0; i < iWidth; i++)
{
byte rCur, gCur, bCur;
rCur = r1 + (short)(float)(((float)rDif/(float)iWidth)*(float)i);
gCur = g1 + (short)(float)(((float)gDif/(float)iWidth)*(float)i);
bCur = b1 + (short)(float)(((float)bDif/(float)iWidth)*(float)i);
for(int y = 0; y < iHeight; y++)
SetPixel(hDC, rect.left + i, rect.top + y,
RGB(rCur, gCur, bCur));
}
}