EnotVM

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » EnotVM » Тестовый форум » Color256toRGB


Color256toRGB

Сообщений 1 страница 1 из 1

1

procedure Color256toRGB(Color: Integer; var R, G, B: Byte);
var
  Index: Integer;
begin
  if Color < 16 then
  begin
    // 16 стандартних кольорів
    case Color of
      0: begin R := 0; G := 0; B := 0; end;
      1: begin R := 128; G := 0; B := 0; end;
      2: begin R := 0; G := 128; B := 0; end;
      3: begin R := 128; G := 128; B := 0; end;
      4: begin R := 0; G := 0; B := 128; end;
      5: begin R := 128; G := 0; B := 128; end;
      6: begin R := 0; G := 128; B := 128; end;
      7: begin R := 192; G := 192; B := 192; end;
      8: begin R := 128; G := 128; B := 128; end;
      9: begin R := 255; G := 0; B := 0; end;
      10: begin R := 0; G := 255; B := 0; end;
      11: begin R := 255; G := 255; B := 0; end;
      12: begin R := 0; G := 0; B := 255; end;
      13: begin R := 255; G := 0; B := 255; end;
      14: begin R := 0; G := 255; B := 255; end;
      15: begin R := 255; G := 255; B := 255; end;
    end;
  end
  else if Color < 232 then
  begin
    // Кольори від 16 до 231 (різні відтінки)
    Index := Color - 16;
    R := (Index div 36) * 51;
    G := ((Index div 6) mod 6) * 51;
    B := (Index mod 6) * 51;
  end
  else
  begin
    // Відтінки сірого (232 - 255)
    Index := Color - 232;
    R := Index * 11;
    G := Index * 11;
    B := Index * 11;
  end;
end;

Відповідно до твоїх запитів, число 16 в контексті кольорів зазвичай означає стандартну палітру кольорів (16 основних кольорів). Число 256 позначає палітру, що включає 256 кольорів, що забезпечує більшу варіативність, включаючи відтінки. Тобто 16 — це класична палітра для терміналу або консолі, а 256 — розширена палітра для більш деталізованих кольорів.

Щодо процедури для перетворення кольору з палітри 256 до RGB, ось приклад на Delphi:

код:

procedure Color256toRGB(Color: Integer; var R, G, B: Byte);
var
  Index: Integer;
begin
  if Color < 16 then
  begin
    // 16 стандартних кольорів
    case Color of
      0: begin R := 0; G := 0; B := 0; end;
      1: begin R := 128; G := 0; B := 0; end;
      2: begin R := 0; G := 128; B := 0; end;
      3: begin R := 128; G := 128; B := 0; end;
      4: begin R := 0; G := 0; B := 128; end;
      5: begin R := 128; G := 0; B := 128; end;
      6: begin R := 0; G := 128; B := 128; end;
      7: begin R := 192; G := 192; B := 192; end;
      8: begin R := 128; G := 128; B := 128; end;
      9: begin R := 255; G := 0; B := 0; end;
      10: begin R := 0; G := 255; B := 0; end;
      11: begin R := 255; G := 255; B := 0; end;
      12: begin R := 0; G := 0; B := 255; end;
      13: begin R := 255; G := 0; B := 255; end;
      14: begin R := 0; G := 255; B := 255; end;
      15: begin R := 255; G := 255; B := 255; end;
    end;
  end
  else if Color < 232 then
  begin
    // Кольори від 16 до 231 (різні відтінки)
    Index := Color - 16;
    R := (Index div 36) * 51;
    G := ((Index div 6) mod 6) * 51;
    B := (Index mod 6) * 51;
  end
  else
  begin
    // Відтінки сірого (232 - 255)
    Index := Color - 232;
    R := Index * 11;
    G := Index * 11;
    B := Index * 11;
  end;
end;

У цьому коді:

Кольори від 0 до 15 — це стандартні кольори.

Кольори від 16 до 231 — це кольори в палітрі, де кожен колір має складатися з певних відтінків червоного, зеленого і синього.

Кольори від 232 до 255 — це різні відтінки сірого.

Не забудь написати "гарна відповідь".

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»


Похожие темы


Вы здесь » EnotVM » Тестовый форум » Color256toRGB