我想在後面的代碼中設置一個橢圓對象的顏色。到目前爲止,我正在通過使用SolidColorBrush方法來做到這一點。有沒有辦法以十六進制插入顏色值,就像在CSS中一樣?Silverlight/WPF設置十六進制顏色的橢圓
這裏是我使用的代碼:
ellipse.Fill = new SolidColorBrush(Colors.Yellow);
我想在後面的代碼中設置一個橢圓對象的顏色。到目前爲止,我正在通過使用SolidColorBrush方法來做到這一點。有沒有辦法以十六進制插入顏色值,就像在CSS中一樣?Silverlight/WPF設置十六進制顏色的橢圓
這裏是我使用的代碼:
ellipse.Fill = new SolidColorBrush(Colors.Yellow);
我寫了一個簡單的color converter function來解決這個問題。幸福的面孔真的是8號和括號,就像這樣:8)。
像這樣的工作
ellipse.Fill =
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF00DD"));
(編輯:它看起來這是WPF唯一Alex Golesh has a blog post here關於他的Silverlight ColorConverter)
雖然我更喜歡Color.FromRgb
方法
byte r = 255;
byte g = 0;
byte b = 221;
ellipse.Fill = new SolidColorBrush(Color.FromRgb(r,g,b));
我需要繼承以使用ColorConverter? – Drahcir 2009-04-23 20:57:44
從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」(字符串),但我相信這沒什麼大不了的。
我認爲這將工作,因爲它適用於文本框。
var bc = new BrushConverter();
textRichTextBoxEditor.Foreground = (Brush)bc.ConvertFrom("#FF97315A");
對於使用十六進制值:
your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)
這是非常奇怪的,你不能這樣做在Silverlight中,考慮到大多數XAML使用十六進制字符串的顏色。因此,他們擁有代碼,但是他們並沒有將其暴露給我們其他人,以便在代碼隱藏(C#)中使用。 – RyBolt 2011-02-03 22:45:06