菜鸟困惑两天了,如何写这个渐变颜色的算法
在RichEdit组件中,实现渐变文字的算法
开头的颜色和结束的颜色是自定义的,所以RGB分量值可能是从大到小也可能是从小到大,或者某个分量值是一样
怎么写这个算法呢??
[解决办法]
初始值 R1G1B1
最终值 R2G2B2
三个分量分开处理,比如做10步渐变,中间插入9个值,总共有11个值。
Rc, Gc, Bc: Real;
Rc := (R2-R1) / 10;
Gc := (G2-G1) / 10;
Bc := (B2-B1) / 10;
for i := 1 to 9 do
begin
R := R1 + Round(Rc * i);
G := G1 + Round(Gc * i);
B := B1 + Round(Bc * i);
RnGnBn := (B shl 16) + (G shl 8) + R; // 得到颜色值
end;
[解决办法]
Tcolor是按$FF FF FF FF
B G R 这样存储
不用(B shl 16) + (G shl 8) + R,颜色就对不上了。
[解决办法]
注意要用浮点数,如果不用浮点数,步数多的时间颜色偏差很大了。