2009-04-23 70 views
4

我想在後面的代碼中設置一個橢圓對象的顏色。到目前爲止,我正在通過使用SolidColorBrush方法來做到這一點。有沒有辦法以十六進制插入顏色值,就像在CSS中一樣?Silverlight/WPF設置十六進制顏色的橢圓

這裏是我使用的代碼:

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

這是非常奇怪的,你不能這樣做在Silverlight中,考慮到大多數XAML使用十六進制字符串的顏色。因此,他們擁有代碼,但是他們並沒有將其暴露給我們其他人,以便在代碼隱藏(C#)中使用。 – RyBolt 2011-02-03 22:45:06

回答

2

我寫了一個簡單的color converter function來解決這個問題。幸福的面孔真的是8號和括號,就像這樣:8)。

4

像這樣的工作

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)); 
+0

我需要繼承以使用ColorConverter? – Drahcir 2009-04-23 20:57:44

2

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; 
1

當然,你也可以做這樣的事情(在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; 
1

再一個,小,快,有用:

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

對於使用十六進制值:

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