Карта сайтаСсылкиКонтакты

Как создать цветовую схему градиента

PDF Печать
Статьи

Вам нужно просто вырезать и вставить процедуру ниже в модуль и объявить функции в Вашем модуле.

Вы можете использьвать SetGradientColor2, чтобы получить цвет, который находится между двумя крайними цветами. Например, чтобы получить цвет, который находится ровно посередине, используйте это:


var
  MyColor: TColor;
begin
  R1 := 255;
  G1 := 0;
  B1 := 0;
  R2 := 0;
  G2 := 0;
  B2 := 0;
  Percent := 0.5;
  MyNewColor := GetGradientColor2(
            R1, G1, B1, R2, G2, B2, Percent);

Вы можете создать цикл от 0 до 1, чтобы получить все цвета хорошего градиента.

Функция GetGradientColor3 работает почти так же, за исключением того, что Вы можете получить цвет между тремя цветами, типа от красного к желтому и далее к синему.


function ColorFromRGB(Red, Green, Blue: Integer): Integer;
  { Возвращает цвет, составленный из красного,
    синего и зеленого компонентов.
    Red, Green и Blue может быть от 0 до 255.}
begin
  { Преобразовывает значения Red, Green и Blue в цвет.}
  Result := Red + Green * 256 + Blue * 65536;
end;

function GetPigmentBetween(P1, P2, Percent: Double): Integer;
  { Возвращает число, которое является Percent между P1 и P2 }
begin
  { Находим число между P1 и P2 }
  Result := Round(((P2 - P1) * Percent) + P1);
  { Удостоверьтесь, что мы в пределах цветов.}
  if Result > 255 then
    Result := 255;
  if Result < 0 then
    Result := 0;
end;

function GetGradientColor2(
        R1, G1, B1, R2, G2, B2, Percent: Double): Integer;
  { Получаем цвет между определенными цветами (R1,G1,B1)
  и (R2,G2,B2) в пределах Percent от 0 до 1.0 ( 0.5 = 50% )}
  If percent = 0 then the color of (R1,G1,B1) is returned
  If Percent = 1 then the color of (R2,G2,B2) is returned
  if Percent is somewhere inbetween, then an inbetween color is returned.}
var
  NewRed, NewGreen, NewBlue: Integer;
begin
  { Проверяем входящие данные. }
  if Percent > 1 then
    Percent := 1;
  if Percent < 0 then
    Percent := 0;
  {Вычисляем компоненты Red, Green b Blue для нового цвета. }
  NewRed := GetPigmentBetween(R1, R2, Percent);
  NewGreen := GetPigmentBetween(G1, G2, Percent);
  NewBlue := GetPigmentBetween(B1, B2, Percent);
  { Преобразовываем RGB в цвет }
  Result := ColorFromRGB(NewRed, NewGreen, NewBlue);
end;

function GetGradientColor3(R1, G1, B1, R2, G2, B2, R3, G3, B3,
  Percent: Double): Integer;
  { Получаем цвет, который является между тремя определенными цветами (R1,G1,B1),
  (R2,G2,B2) и (R3,G3,B3). Похоже на GetGradientColor2,
  за исключением того, что можно определить 3 цвета вместо 2.}
begin
  { Используем GetGradient2 для основной работы }
  if Percent < 0.5 then
    Result := GetGradientColor2(
      R1, G1, B1, R2, G2, B2, Percent * 2
    )
  else
    Result := GetGradientColor2(
      R2, G2, B2, R3, G3, B3, (Percent - 0.5) * 2
    );
end;

 

Добавить комментарий


Защитный код
Обновить