//下面是我的代码,帮我看看有什么问题??
//在我这里的现象是:是黑色到红色的渐变;可是我想要的是蓝色到绿色的渐变!
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);谁能帮帮我??
//在我这里的现象是:是黑色到红色的渐变;可是我想要的是蓝色到绿色的渐变!
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);谁能帮帮我??
希望版主将我的分还给我啊!
我用的方法是:delphi中的GradientFill定义有BUG,就是color16=shortint=-128..127
而大家都知道RGB颜色取值范围是0..255,因此,为了解决这个BUG,唯一的办法就是我自己显式的调用msimg32.dll中的GradientFill函数。