Silverlight/WPF устанавливает эллипс с шестнадцатеричным цветом
Я пытаюсь установить цвет объекта эллипса в коде позади. Пока что я делаю это с помощью метода SolidColorBrush. Есть ли способ вставить значение цвета в шестнадцатеричном, как в CSS?
Вот код, который я использую:
ellipse.Fill = new SolidColorBrush(Colors.Yellow);
7 ответов
Я написал простую функцию преобразования цвета, чтобы решить эту проблему. Счастливые лица на самом деле число 8 и скобки, как это: 8).
Примерно так будет работать
ellipse.Fill =
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF00DD"));
(Редактировать: похоже, это только WPF. У Алекса Голеша есть запись в блоге о его Silverlight ColorConverter)
Хотя я предпочитаю Color.FromRgb
метод
byte r = 255;
byte g = 0;
byte b = 221;
ellipse.Fill = new SolidColorBrush(Color.FromRgb(r,g,b));
Из MSDN
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
// Describes the brush's color using RGB values.
// Each value has a range of 0-255.
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 255);
myRgbRectangle.Fill = mySolidColorBrush;
Конечно, вы также можете сделать что-то вроде этого (используя шестнадцатеричные числа в функции FromArgb):
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
// Describes the brush's 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;
Еще один, маленький, быстрый и полезный:
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" (строка), но я уверен, что это не так уж и страшно.
Для использования шестнадцатеричного значения:
your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)
Я думаю, что это будет работать, как это работает для текстового поля.
var bc = new BrushConverter();
textRichTextBoxEditor.Foreground = (Brush)bc.ConvertFrom("#FF97315A");