Silverlight / WPF устанавливает эллипс с шестнадцатеричным цветом - PullRequest
4 голосов
/ 24 апреля 2009

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

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

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

Ответы [ 7 ]

4 голосов
/ 24 апреля 2009

Примерно так будет работать

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)); 
2 голосов
/ 24 апреля 2009

С 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;   
2 голосов
/ 24 апреля 2009

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

1 голос
/ 30 апреля 2012

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

 your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)
1 голос
/ 24 апреля 2009

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

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" (строка), но я уверен, что это не страшно.

1 голос
/ 24 апреля 2009

Конечно, вы также можете сделать что-то вроде этого (используя шестнадцатеричные числа в функции 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;
0 голосов
/ 02 ноября 2011

Я думаю, что это будет работать, как это работает для текстового поля.

var bc = new BrushConverter();
textRichTextBoxEditor.Foreground = (Brush)bc.ConvertFrom("#FF97315A");

Визит http://soulsolutions.com.au/Blog/tabid/73/EntryId/617/Using-Hex-Colour-values-to-set-Foreground-in-WPF.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...