一般图形编辑工具里都有那种渐变填充工具,选一个起始颜色,再选一个结束颜色,再在画布上拖一条直线,就可以填充出一块颜色渐变的区域。
想问一下这中间的颜色是怎么算出来的?还一个就是我想做一个图片放大,放大10倍左右,有什么好的平滑、去锯齿算法吗?是用在地图放大上的,可能算法要特殊一点
两个问题,最好有代码看看,分不够可以再给80分一个
谢谢!
想问一下这中间的颜色是怎么算出来的?还一个就是我想做一个图片放大,放大10倍左右,有什么好的平滑、去锯齿算法吗?是用在地图放大上的,可能算法要特殊一点
两个问题,最好有代码看看,分不够可以再给80分一个
谢谢!
第一个问题,用循环就好了
color:=color+1procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
//颜色起止:$00D0E7F4 - $00E7DBEA
for i :=1 to $00E7DBEA - $00D0E7F4 do
begin
Application.ProcessMessages;
Form1.Color:=$00D0E7F4+ i;
//sleep(100);
end;
ShowMessage('ok');
end;
好象效果不是很好啊
我要的效果是人眼看起来是渐变的效果
但是按你那样的话
比如从rgb(0,0,0)到 rgb(255,0,0)
那不是要多了很多中间的颜色?
1.Color1分解為(R1,G1,B1),Color2分解為(R2,G2,B2);
2.取得拖動距離L
3.算出拖動方向每點的顏色:
for i:=0 to L-1 do
begin
Rx:=R1+(R2-R1)*(i+1)/L;
Gx:=G1+(G2-G1)*(i+1)/L;
Bx:=B1+(B2-B1)*(i+1)/L;
Cx:=RGB(Rx,Gx,Bx);
//用Cx去畫圖
//...
end;