一般图形编辑工具里都有那种渐变填充工具,选一个起始颜色,再选一个结束颜色,再在画布上拖一条直线,就可以填充出一块颜色渐变的区域。
想问一下这中间的颜色是怎么算出来的?还一个就是我想做一个图片放大,放大10倍左右,有什么好的平滑、去锯齿算法吗?是用在地图放大上的,可能算法要特殊一点
两个问题,最好有代码看看,分不够可以再给80分一个
谢谢!

解决方案 »

  1.   

    第二个问题不会
    第一个问题,用循环就好了
    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;
      

  2.   

    to : hqhhh(枫叶)
    好象效果不是很好啊
    我要的效果是人眼看起来是渐变的效果
    但是按你那样的话
    比如从rgb(0,0,0)到 rgb(255,0,0)
    那不是要多了很多中间的颜色?
      

  3.   

    第一个问题,用三基色分解法:從Color1 到 Color2:
    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;