Как преобразовать шестнадцатиричный цвет HTML в TColor
Стоит взвод молодых бойцов. Старшина:
- По порядку номеров рассчитайсь!!! Солдат-программист:
- Можно вопрос ?
- Можно...
- А в какой системе? Десятичной? Шестнадцатеричной?
- Для дураков объясняю, в десятичной!!!
- Понял! Нулевой!!!
unit colours;
interfaceuses
Windows, Sysutils, Graphics;
function ConvertHtmlHexToTColor(Color: string):TColor ;
function CheckHexForHash(col: string):string ;
implementationfunction ConvertHtmlHexToTColor(Color: string):TColor ;
var
rColor: TColor;
begin
Color := CheckHexForHash(Color);
if (length(color) >= 6) thenbegin{незабудьте, что TColor это bgr, а не rgb: поэтому необходимо изменить порядок}
color := '$00' + copy(color,5,2) + copy(color,3,2) + copy(color,1,2);
rColor := StrToInt(color);
end;
result := rColor;
end;
// Просто проверяет первый сивол строки на наличие '#' и удаляет его, если он найденfunction CheckHexForHash(col: string):string ;
beginif col[1] = '#' then
col := StringReplace(col,'#','',[rfReplaceAll]);
result := col;
end;
end.
Перевод контента на русский язык:
Код, который вы предоставили, написан на языке Pascal и предназначен для преобразования кода цвета в формате hexadecimal из HTML в тип цвета TColor, используемый в языке программирования Delphi.
Вот разбивка того, что код делает:
Функция CheckHexForHash проверяет, начинается ли входная строка с символа '#'. Если это так, она удаляет символ '#'.
Функция ConvertHtmlHexToTColor принимает код цвета в формате hexadecimal как входной параметр и преобразует его в TColor.
Вот некоторые предложения по улучшению:
В функции CheckHexForHash можно использовать функцию TrimLeft вместо StringReplace. Это более эффективно и делает то же самое.
В функции ConvertHtmlHexToTColor можно использовать функцию Copy для извлечения красных, зеленых и синих компонентов из кода цвета hexadecimal. Это делает код более читаемым и понятным.
Вот пример реализации:
functionConvertHtmlHexToTColor(Color:string):TColor;varr,g,b:Word;beginColor:=CheckHexForHash(Color);ifLength(Color)>=7then// код цвета с каналом альфаbeginr:=StrToInt('$'+Copy(Color,1,2));g:=StrToInt('$'+Copy(Color,3,2));b:=StrToInt('$'+Copy(Color,5,2));endelse// код цвета без канала альфаbeginr:=StrToInt('$'+Copy(Color,1,2));g:=StrToInt('$'+Copy(Color,3,2));b:=StrToInt('$'+Copy(Color,5,2));end;Result:=(bshr(bshl16)orshlr(g,8)orr);end;
Код работает следующим образом: извлекает красные, зеленые и синие компоненты из кода цвета hexadecimal с помощью функции Copy. Затем конвертирует эти компоненты в целые числа с помощью функции StrToInt. Наконец, комбинирует компоненты в единый тип TColor с помощью битовых операций.
Обратите внимание, что порядок компонентов важен, потому что TColor представляет цвета в формате BGR (синий, зеленый, красный), а не RGB.
Статья рассказывает о преобразовании шестнадцатиричных цветов HTML в тип TColor, используемых в программировании на языке Delphi, и предлагает функцию для выполнения этого преобразования.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.