Silverlight/WPF 用十六进制颜色设置椭圆
Posted
技术标签:
【中文标题】Silverlight/WPF 用十六进制颜色设置椭圆【英文标题】:Silverlight/WPF sets ellipse with hexadecimal colour 【发布时间】:2010-10-21 11:14:26 【问题描述】:我正在尝试在后面的代码中设置椭圆对象的颜色。到目前为止,我是通过使用 SolidColorBrush 方法来完成的。有没有办法像在 CSS 中一样以十六进制插入颜色值?
这是我正在使用的代码:
ellipse.Fill = new SolidColorBrush(Colors.Yellow);
【问题讨论】:
考虑到大多数 XAML 使用十六进制字符串作为颜色,您不能在 Silverlight 中执行此操作很奇怪。因此,他们拥有代码,但他们并没有以在代码隐藏 (C#) 中使用的方式向我们其他人公开它。 【参考方案1】:这样的事情会起作用
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? 在 WPF 中它在 System.Windows.Media 中,在 Silverlight 中,它不是。查看我的编辑。【参考方案2】:我写了一个简单的color converter function 来解决这个问题。快乐的面孔实际上是数字 8 和括号,如下所示:8)。
【讨论】:
【参考方案3】:来自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;
【讨论】:
【参考方案4】:当然,您也可以这样做(使用 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;
【讨论】:
【参考方案5】:对于使用十六进制值:
your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)
【讨论】:
【参考方案6】:另一个,小巧,快速且有用:
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" (string),但我相信这没什么大不了的。
【讨论】:
【参考方案7】:我认为这会起作用,因为它适用于文本框。
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
【讨论】:
以上是关于Silverlight/WPF 用十六进制颜色设置椭圆的主要内容,如果未能解决你的问题,请参考以下文章