Silverlight / WPF设置具有十六进制颜色的椭圆

时间:2009-04-23 20:25:23

标签: wpf silverlight

我正在尝试在后面的代码中设置椭圆对象的颜色。到目前为止,我正在使用SolidColorBrush方法。有没有办法用十六进制插入颜色值,比如CSS?

以下是我正在使用的代码:

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

7 个答案:

答案 0 :(得分: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)); 

答案 1 :(得分:2)

我写了一个简单的color converter function来解决这个问题。幸福的面孔实际上是数字8和括号,如下所示:8)。

答案 2 :(得分: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;   

答案 3 :(得分: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;

答案 4 :(得分: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”(字符串),但我确信这没什么大不了的。

答案 5 :(得分:1)

使用十六进制值:

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

答案 6 :(得分:0)

我认为这样可行,因为它适用于文本框。

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