Быстрый способ изменить код для возврата значения - это объединить только первый символ из RGB
значений:
string hex = "#" + myColor.R.ToString("X2")[0] + myColor.G.ToString("X2")[0] +
myColor.B.ToString("X2")[0];
Но, поскольку только подмножество 6- Коды di git могут быть точно преобразованы в коды 3-di git (только те, которые содержат повторяющиеся символы), было бы полезно написать вспомогательный метод для преобразования значений:
public string GetThreeDigitRGB(Color color)
{
// Get the 2-character RGB color codes
var r = color.R.ToString("X2");
var g = color.G.ToString("X2");
var b = color.B.ToString("X2");
// Every color must have a repeating character for its code, otherwise we return null
return r[0] == r[1] && g[0] == g[1] && b[0] == b[1]
? $"#{r[0]}{g[0]}{b[0]}"
: null;
}
Тогда ваш исходный код может быть изменен для создания объекта Color
из ввода и передачи его нашему вспомогательному методу выше, чтобы получить код 3-di git (также обратите внимание на изменение, в котором мы получаем значения цвета в порядке RGBA, который как они передаются):
public string GetCssValue(IWebElement iwe, string cssValue)
{
var value = iwe.GetCssValue(cssValue);
string[] numbers = value.Replace("rgba(", "").Replace(")", "").Split(",");
// Note the change to get the colors in the correct order
int r = int.Parse(numbers[0]);
int g = int.Parse(numbers[1]);
int b = int.Parse(numbers[2]);
int a = int.Parse(numbers[3]);
// Create a color from the values
Color myColor = Color.FromArgb(a, r, g, b);
// Call our helper method to get the three digit code from the color
return GetThreeDigitRGB(myColor);
}