L
lb3141
Unregistered / Unconfirmed
GUEST, unregistred user!
随便设置两个起始颜色作渐变,参数NUM指渐变后颜色的数量,参数Index指第几个渐变色,
但这段代码返回的颜色始终是一个值,请各位大虾帮帮忙呀!
如下:
GetColorA(0,101,clblack,clred);
GetColorA(1,101,clblack,clred);
GetColorA(2,101,clblack,clred);
...
...
GetColorA(100,101,clblack,clred);
获取的100个渐变色都一样,不知问题在哪?
以下是源代码:
// ************************************************************
// 参数:
// Index:当前的要获取的颜色索引
// Num: 颜色渐变的数量
// StartColor,EndColor:起始和结束的颜色值
// 返回值:当前的颜色索引(Index)的颜色
// 描述:获取当前指定的渐变色值
// ************************************************************
function GetColorA(Index, Num: Integer; StartColor,EndColor: TColor): Cardinal;
var
StartRGB,EndRGB: array [0..2] of Byte;
RGBKoef: array [0..2] of Double;
IntR,IntG,IntB :Integer;
begin
StartColor := ColorToRGB(StartColor);
EndColor := ColorToRGB(EndColor);
StartRGB[0] := GetRValue(StartColor);
StartRGB[1] := GetGValue(StartColor);
StartRGB[2] := GetBValue(StartColor);
EndRGB[0] := GetRValue(EndColor);
EndRGB[1] := GetGValue(EndColor);
EndRGB[2] := GetBValue(EndColor);
IntR :=(EndRGB[0] - StartRGB[0]);
IntG :=(EndRGB[1] - StartRGB[1]);
IntB :=(EndRGB[2] - StartRGB[2]);
RGBKoef[0] := IntR / Num;
RGBKoef[1] := IntG / Num;
RGBKoef[2] := IntB / Num;
Result :=TColor(RGB(
StartRGB[0] + Round((Index + 1) * RGBKoef[0]),
StartRGB[1] + Round((Index + 1) * RGBKoef[1]),
StartRGB[2] + Round((Index + 1) * RGBKoef[2])));
end;
但这段代码返回的颜色始终是一个值,请各位大虾帮帮忙呀!
如下:
GetColorA(0,101,clblack,clred);
GetColorA(1,101,clblack,clred);
GetColorA(2,101,clblack,clred);
...
...
GetColorA(100,101,clblack,clred);
获取的100个渐变色都一样,不知问题在哪?
以下是源代码:
// ************************************************************
// 参数:
// Index:当前的要获取的颜色索引
// Num: 颜色渐变的数量
// StartColor,EndColor:起始和结束的颜色值
// 返回值:当前的颜色索引(Index)的颜色
// 描述:获取当前指定的渐变色值
// ************************************************************
function GetColorA(Index, Num: Integer; StartColor,EndColor: TColor): Cardinal;
var
StartRGB,EndRGB: array [0..2] of Byte;
RGBKoef: array [0..2] of Double;
IntR,IntG,IntB :Integer;
begin
StartColor := ColorToRGB(StartColor);
EndColor := ColorToRGB(EndColor);
StartRGB[0] := GetRValue(StartColor);
StartRGB[1] := GetGValue(StartColor);
StartRGB[2] := GetBValue(StartColor);
EndRGB[0] := GetRValue(EndColor);
EndRGB[1] := GetGValue(EndColor);
EndRGB[2] := GetBValue(EndColor);
IntR :=(EndRGB[0] - StartRGB[0]);
IntG :=(EndRGB[1] - StartRGB[1]);
IntB :=(EndRGB[2] - StartRGB[2]);
RGBKoef[0] := IntR / Num;
RGBKoef[1] := IntG / Num;
RGBKoef[2] := IntB / Num;
Result :=TColor(RGB(
StartRGB[0] + Round((Index + 1) * RGBKoef[0]),
StartRGB[1] + Round((Index + 1) * RGBKoef[1]),
StartRGB[2] + Round((Index + 1) * RGBKoef[2])));
end;