Fahid Zahoor Ответов: 2

Преобразуйте это значение"color [a=255, R=128, G=0, B=255]" в цвет в C#


Привет, я работаю над приложением c# winform и храню цвет в базе данных "
Color [A=255, R=128, G=0, B=255]
"в этой форме теперь я хочу преобразовать это обратно в цвет .любой человек скажет мне, как я могу это сделать

Что я уже пробовал:

Я получаю цвет в Строковой форме из sql server 2014
string bakcolo=row["Color"].ToString();
            // and try this method to convert string in color but its not working
               Color mycolor = ColorTranslator.FromHtml(bakcolo);
              Colorbutton1.BackColor=Color.FromName(bakcolo);

2 Ответов

Рейтинг:
0

Maciej Los

5ed!

Mehdi Gholam

Ваше здоровье!

Maciej Los

:большой палец вверх:

Рейтинг:
0

OriginalGriff

Почему вы храните значение цвета в БД в виде строки? Он помещается в целое число без знака как "собственное" значение ... и тогда это просто простое дело, чтобы получить цвет обратно:

Color c = Color.AliceBlue;
int i = c.ToArgb();
c = Color.FromArgb(i);

Играть со струнами одновременно и неэффективно, и громоздко:
string s = "Color [A=255, R=128, G=0, B=255]";
Match m = Regex.Match(s, @"A=(?<Alpha>\d+),\s*R=(?<Red>\d+),\s*G=(?<Green>\d+),\s*B=(?<Blue>\d+)");
if (m.Success)
    {
    int alpha = int.Parse(m.Groups["Alpha"].Value);
    int red = int.Parse(m.Groups["Red"].Value);
    int green = int.Parse(m.Groups["Green"].Value);
    int blue = int.Parse(m.Groups["Blue"].Value);
    Color c = Color.FromArgb(alpha, red, green, blue);
    ...
    }


Fahid Zahoor

Цвет с = Цвет.AliceBlue;
int i = c.ToArgb();
с = Цвет.FromArgb(i);
это хороший метод теперь я использую его но одна проблема с которой я сталкиваюсь
Я использую colordialouge для выбора цвета теперь, пожалуйста, скажите мне, как я могу поставить выбранный цвет вместо этого имени "AliceBlue".
Или 1).у вас есть какие-нибудь идеи, как я могу преобразовать выбранный цвет в его название.
2) у вас есть какие-либо идеи, как я могу преобразовать цвет фона кнопки в имя цвета и сохранить это имя цвета в любой переменной строкового типа данных.

OriginalGriff

Ты ведь шутишь, правда?
"Цвет.AliceBlue" был просто примером, чтобы показать, что это работает - когда у вас есть значение цвета в переменной, не имеет значения, каково ее имя. И ColorDialog предоставляет вам значение цвета, когда пользователь выбрал его!

И не храните "названия цветов" - в значении цвета ARGB есть 4 294 967 295 различных цветовых комбинаций, и не все из них имеют имена... Сохраните целочисленное значение, и оно может быть легко и эффективно преобразовано.

Fahid Zahoor

Итак, пожалуйста, скажите мне, как я могу преобразовать выбранный цвет в целочисленное значение, а затем сохранить это целочисленное значение в базе данных

OriginalGriff

О... но преобразование цвета в int так сложно! И я не давал вам код для этого два дня назад, не так ли? :doh:


Знаешь, мне кажется, что да ... это целая строка кода ... который вызывает только один метод ...

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