Я создаю небольшую коллекцию типов / функций, связанных с градиентами, для будущего использования. Я хочу убедиться, что есть как минимум две процедуры: ColorBetween и ColorsBetween. Я могу просто получить массив TColor между любыми двумя цветами (ColorsBetween), и мне также может потребоваться знать одно значение цвета в процентах между двумя цветами (ColorBetween).
Я уже сделал это в основном ниже. Кроме того, у меня есть два основных вопроса:
[???]
) Вот код:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
StrUtils, StdCtrls, Math;
type
TColorArray = array of TColor;
implementation
function ColorsBetween(const ColorA, ColorB: TColor; const Count: Integer): TColorArray;
var
X: Integer; //Loop counter
begin
SetLength(Result, Count);
for X:= 0 to Count - 1 do
Result[X]:= ColorBetween(ColorA, ColorB, Round((X / Count) * 100)); //Correct?
end;
function ColorBetween(const ColorA, ColorB: TColor; const Percent: Single): TColor;
var
R1, G1, B1: Byte;
R2, G2, B2: Byte;
begin
R1:= GetRValue(ColorA);
G1:= GetGValue(ColorA);
B1:= GetBValue(ColorA);
R2:= GetRValue(ColorB);
G2:= GetGValue(ColorB);
B2:= GetBValue(ColorB);
Result:= RGB(
EnsureRange(([???]), 0, 255),
EnsureRange(([???]), 0, 255),
EnsureRange(([???]), 0, 255)
);
end;
EDIT: Изменено Percent: Integer
на Percent: Single
для получения более плавного эффекта - не ограничено 100 возможными значениями.