首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

初学者困惑两天了,怎么写这个渐变颜色的算法

2012-02-21 
菜鸟困惑两天了,如何写这个渐变颜色的算法在RichEdit组件中,实现渐变文字的算法开头的颜色和结束的颜色是

菜鸟困惑两天了,如何写这个渐变颜色的算法
在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,颜色就对不上了。
[解决办法]
注意要用浮点数,如果不用浮点数,步数多的时间颜色偏差很大了。

热点排行