Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Преобразование цветов Delphi (TColor) в RGB (hex) для ASP.NET

Delphi , Графика и Игры , Цвета и Палитра

Вопрос, поднятый пользователем, связан с необходимостью преобразования цветов, используемых в Delphi (TColor), в формат RGB (hex), который можно использовать в ASP.NET. В базе данных хранятся числа, происходящие из кода на Delphi, и пользователь хочет преобразовать их в шестнадцатеричный формат, например, #000000, #FFFF99 и так далее.

Решение проблемы

Цвета в Delphi представлены типом TColor и имеют формат XXBBGGRR, где XX - это дополнительные байты, которые используются для индексированных цветов или специальных случаев. Для стандартных цветов эти байты будут равны 00 (черный цвет) или FF (прозрачный). Для системных цветов используется отрицательное значение, где старший бит установлен в 1, и значение представляет собой константу Windows.

Преобразование в стандартный цвет

Чтобы преобразовать TColor в стандартный цвет в C#, можно использовать следующий код:

var color = Color.FromArgb(0xFF, c & 0xFF, (c >> 8) & 0xFF, (c >> 16) & 0xFF);

Преобразование в шестнадцатеричный формат

Для преобразования цвета в шестнадцатеричный формат, можно использовать следующий метод:

string ColorToHex(Color color)
{
    return string.Format("#{0:X2}{1:X2}{2:X2}", color.B, color.G, color.R);
}

Преобразование системных цветов

Для системных цветов, которые представлены отрицательными значениями в базе данных, можно использовать функцию Color.FromKnownColor, передав ей константу Windows, извлеченную из TColor:

return Color.FromKnownColor((KnownColor)(delphiColor & 0xFFFFFF));

Пример кода

Вот пример функции, которая преобразовывает TColor в объект Color в C#:

Color DelphiColorToColor(uint delphiColor)
{
    switch((delphiColor >> 24) & 0xFF)
    {
        case 0x01: // Индексированный цвет
        case 0xFF: // Ошибка
            return Color.Transparent;
        case 0x80: // Системный цвет
            return Color.FromKnownColor((KnownColor)(delphiColor & 0xFFFFFF));
        default:
            var r = (int)(delphiColor & 0xFF);
            var g = (int)((delphiColor >> 8) & 0xFF);
            var b = (int)((delphiColor >> 16) & 0xFF);
            return Color.FromArgb(0xFF, r, g, b);
    }
}

Важные замечания

При преобразовании системных цветов следует помнить, что порядок компонентов цвета в Delphi отличается от порядка в C#. В Delphi порядок - BGR, в C# - RGB. Поэтому при преобразовании важно учитывать этот факт.

Заключение

Преобразование цветов между Delphi и ASP.NET требует понимания того, как представлены цвета в обеих системах. Используя предложенные методы, можно успешно выполнить необходимые преобразования и использовать цвета в ASP.NET в формате RGB (hex).

Создано по материалам из источника по ссылке.

Вопрос связан с преобразованием цветов из формата Delphi (TColor) в формат RGB (hex) для использования в ASP.NET.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Цвета и Палитра ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 09:17:17/0.0033209323883057/0