//下面是我的代码,帮我看看有什么问题??
//在我这里的现象是:是黑色到红色的渐变;可是我想要的是蓝色到绿色的渐变!
var
    vert:array[0..1]of TTRIVERTEX;
    gRect:GRADIENT_RECT;
begin
    vert [0] .x       :=  0;
    vert [0] .y       :=  0;
    vert [0] .Red     :=  0;
    vert [0] .Green   :=  127;//MSDN上写的是0xff00,可是在Delphi中Green的类型是color16
                              //而在windows.pas中定义的color16=shortint=-128..127,晕阿!
                              //颜色值不都是0..255嘛!!
    vert [0] .Blue    :=  0;
    vert [0] .Alpha   :=  $0000;    vert [1] .x       :=  100;
    vert [1] .y       :=  100;
    vert [1] .Red     :=  0;
    vert [1] .Green   :=  0;
    vert [1] .Blue    :=  127;
    vert [1] .Alpha   :=  $0000;
    gRect.UpperLeft  := 0;
    gRect.LowerRight := 1;    GradientFill(self.Canvas.Handle,vert[0],2,@gRect,1,GRADIENT_FILL_RECT_H);谁能帮帮我??

解决方案 »

  1.   

    好了!我自己解决了!同样谢谢大家!
    希望版主将我的分还给我啊!
    我用的方法是:delphi中的GradientFill定义有BUG,就是color16=shortint=-128..127
    而大家都知道RGB颜色取值范围是0..255,因此,为了解决这个BUG,唯一的办法就是我自己显式的调用msimg32.dll中的GradientFill函数。
      

  2.   

    其实不用,不知道为什么Borland一直没有修正Color16 = shortint,其实应该是word型才是