Silverlight/WPF устанавливает эллипс с шестнадцатеричным цветом

Я пытаюсь установить цвет объекта эллипса в коде позади. До сих пор я это делаю, используя метод SolidColorBrush. Есть ли способ вставить значение цвета в шестнадцатеричном виде, например, в CSS?

Вот код, который я использую:

ellipse.Fill = new SolidColorBrush(Colors.Yellow);

Ответ 1

Я написал простую функцию преобразования цвета, чтобы решить эту проблему. Счастливые лица - это действительно число 8 и круглые скобки, например: 8).

Ответ 2

Что-то вроде этого будет работать

ellipse.Fill = 
    new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF00DD")); 

(Edit: похоже, что это только WPF. У Alex Golesh есть запись в блоге о его Silverlight ColorConverter)

Хотя я предпочитаю метод Color.FromRgb

byte r = 255;
byte g = 0;
byte b = 221;
ellipse.Fill = new SolidColorBrush(Color.FromRgb(r,g,b)); 

Ответ 3

От MSDN

SolidColorBrush mySolidColorBrush = new SolidColorBrush();

// Describes the brush color using RGB values. 
// Each value has a range of 0-255.
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 255);
myRgbRectangle.Fill = mySolidColorBrush;   

Ответ 4

Конечно, вы также можете сделать что-то вроде этого (используя шестнадцатеричные числа в функции FromArgb):

SolidColorBrush mySolidColorBrush = new SolidColorBrush();

// Describes the brush color using RGB HEX values. 
// Each value has a range of 0-255. Use 0x for HEX numbers
mySolidColorBrush.Color = Color.FromArgb(255, 0xFF, 0xC0, 0xD0);
myRgbRectangle.Fill = mySolidColorBrush;

Ответ 5

Еще один, маленький, быстрый и полезный:

public static Color ToColor(this uint argb)
{
    return Color.FromArgb((byte)((argb & -16777216) >> 0x18),
                          (byte)((argb & 0xff0000) >> 0x10),
                          (byte)((argb & 0xff00) >> 8),
                          (byte)(argb & 0xff));
}

Использовать в коде:

SolidColorBrush scb  = new SolidColorBrush (0xFFABCDEF.ToColor());

Конечно, нужно использовать нотацию 0xFFFFFFFF (uint) вместо "#FFFFFFFF" (строка), но я уверен, что это не имеет большого значения.

Ответ 6

Для использования шестнадцатеричного значения:

 your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)