如何以编程方式设置TextBlock前景十六进制颜色

Kan*_*pan 4 windows-phone-8

我必须使用Textblock的前景十六进制颜色.它不起作用.请帮助我.

我试过这个例子

txtHome.Foreground = new SolidColorBrush(Colors.Red);
Run Code Online (Sandbox Code Playgroud)

但我想使用Hex颜色代码不使用Color.red等.

Wir*_*rie 9

虽然有些答案会创建不必要的字符串,但我建议使用效率最高的字符串:

var brush=new SolidColorBrush(Color.FromArgb(0xFF, 0xD0, 0x20, 0x30));
Run Code Online (Sandbox Code Playgroud)

我刚刚使用该FromArgb方法直接转换颜色的十六进制表示.第一个参数是alpha或opacity,您可以始终使用255/0xFF来指定完全不透明度.然后,它只提供表示颜色的3个字节,它们与在颜色的常见十六进制表示中出现的顺序相同.在上面的例子中:"D02030".

此外,您可以考虑创建一个可重用的资源来表示SolidColorBrush并将其添加到app.xaml文件中,以使其全局可用:

<SolidColorBrush x:Key="myBrush" Color="#D02030" />
Run Code Online (Sandbox Code Playgroud)

然后,在代码中:

txtHome.Foreground =  App.Current.Resources["myBrush"] as SolidColorBrush;
Run Code Online (Sandbox Code Playgroud)


Olt*_*ter 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)
                )
            );
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它:

txtHome.Foreground = ColorConverter.GetColorFromHexa(("#FFF0F0F0"));
Run Code Online (Sandbox Code Playgroud)