⑴ 圖形圖像軟體中對兩個色彩進行線性漸變的演算法是什麼是以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));
}
}