我必须使用Textblock的前景十六进制颜色。它不起作用。请帮助我。
我试过这个例子
txtHome.Foreground = new SolidColorBrush(Colors.Red);
但我想使用Hex颜色代码而不使用Color.red等..
答案 0 :(得分:9)
虽然有些答案会产生不必要的字符串,但我建议只使用最有效的字符串:
var brush=new SolidColorBrush(Color.FromArgb(0xFF, 0xD0, 0x20, 0x30));
我刚刚使用FromArgb
方法直接转换颜色的十六进制表示。第一个参数是alpha或opacity,您可以始终使用255 / 0xFF来指定完全不透明度。然后,它只提供表示颜色的3个字节,它们与它们在颜色的常见十六进制表示中出现的顺序相同。在上面的示例中:"D02030"
。
此外,您可以考虑创建一个代表SolidColorBrush
的可重用资源,并将其添加到app.xaml
文件中,以使其全局可用:
<SolidColorBrush x:Key="myBrush" Color="#D02030" />
然后,在代码中:
txtHome.Foreground = App.Current.Resources["myBrush"] as SolidColorBrush;
答案 1 :(得分:3)
试试这个:
public class ColorConverter
{
public static SolidColorBrush GetColorFromHexa(string hexaColor)
{
return new SolidColorBrush(
Color.FromArgb(
Convert.ToByte(hexaColor.Substring(1, 2), 16),
Convert.ToByte(hexaColor.Substring(3, 2), 16),
Convert.ToByte(hexaColor.Substring(5, 2), 16),
Convert.ToByte(hexaColor.Substring(7, 2), 16)
)
);
}
}
然后你就可以使用它:
txtHome.Foreground = ColorConverter.GetColorFromHexa(("#FFF0F0F0"));
答案 2 :(得分:1)
您可以使用此功能将十六进制颜色转换为颜色值,然后您可以在文本块上设置它。
public Color ConvertStringToColor(String hex) {
hex = hex.Replace("#", "");
byte a = 255;
byte r = 255;
byte g = 255;
byte b = 255;
int start = 0;
//handle ARGB strings (8 characters long)
if (hex.Length == 8)
{
a = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
start = 2;
}
//convert RGB characters to bytes
r = byte.Parse(hex.Substring(start, 2), System.Globalization.NumberStyles.HexNumber);
g = byte.Parse(hex.Substring(start + 2, 2), System.Globalization.NumberStyles.HexNumber);
b = byte.Parse(hex.Substring(start + 4, 2), System.Globalization.NumberStyles.HexNumber);
return Color.FromArgb(a, r, g, b);
}
Color color1 = ConvertStringToColor(“#F0A30A”); txtHome.Foreground = new SolidColorBrush(color1);
答案 3 :(得分:1)
txtHome.Foreground = GetColorFromHexa("#FF0000");
SolidColorBrush GetColorFromHexa(string hexaColor)
{
byte r = Convert.ToByte(hexaColor.Substring(1, 2), 16);
byte g = Convert.ToByte(hexaColor.Substring(3, 2), 16);
byte b = Convert.ToByte(hexaColor.Substring(5, 2), 16);
SolidColorBrush soliColorBrush = new SolidColorBrush(Color.FromArgb(0xFF, r, g, b));
return soliColorBrush;
}
答案 4 :(得分:0)
创建下面提到的方法,
public SolidColorBrush GetColorFromHexa(string hexaColor)
{
return new SolidColorBrush(
Color.FromArgb(
Convert.ToByte(hexaColor.Substring(1, 2), 16),
Convert.ToByte(hexaColor.Substring(3, 2), 16),
Convert.ToByte(hexaColor.Substring(5, 2), 16),
Convert.ToByte(hexaColor.Substring(7, 2), 16)
)
);
}
并将其用作
image.Background = GetColorFromHexa("#FF7b9a30");