Преобразуйте систему. Рисование. Цвет к RGB и шестнадцатеричному значению

Используя C# я пытался разработать следующие два. Путем я делаю, это может иметь некоторую проблему и нуждаться в Вашем добром совете. Кроме того, я не знаю, существует ли какой-либо существующий метод, чтобы сделать то же.

private static String HexConverter(System.Drawing.Color c)
{
    String rtn = String.Empty;
    try
    {
        rtn = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
    }
    catch (Exception ex)
    {
        //doing nothing
    }

    return rtn;
}

private static String RGBConverter(System.Drawing.Color c)
{
    String rtn = String.Empty;
    try
    {
        rtn = "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
    }
    catch (Exception ex)
    {
        //doing nothing
    }

    return rtn;
}

Спасибо.

115
задан Hoque 7 March 2010 в 06:54
поделиться

2 ответа

Я не вижу здесь проблемы. Код мне нравится.

Единственное, о чем я могу думать, это то, что блоки try / catch являются избыточными: Color - это структура, а R, G и B - байты, поэтому c не может быть нулевым и cRToString () , cGToString () и cBToString () на самом деле не могут дать сбой (единственный способ увидеть их сбой - это исключение NullReferenceException , и ни один из них не может быть нулевым).

Вы можете очистить все это, используя следующее:

private static String HexConverter(System.Drawing.Color c)
{
    return "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
}

private static String RGBConverter(System.Drawing.Color c)
{
    return "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
}
186
ответ дан 24 November 2019 в 02:19
поделиться

Можно не усложнять и использовать родной транслятор цветов:

Color red = ColorTranslator.FromHtml("#FF0000");
string redHex = ColorTranslator.ToHtml(red);

Затем разбить три пары цветов в целочисленную форму:

int value = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
178
ответ дан 24 November 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: