Windows phone 8 如何以编程方式设置文本块前景十六进制颜色

Windows phone 8 如何以编程方式设置文本块前景十六进制颜色,windows-phone-8,Windows Phone 8,我必须实用地使用文本块的前景十六进制颜色。它不起作用。请帮助我 我试过这个例子 txtHome.Foreground = new SolidColorBrush(Colors.Red); 但我想使用十六进制颜色代码,而不是使用color.red等 试试这个: public class ColorConverter { public static SolidColorBrush GetColorFromHexa(string hexaColor) {

我必须实用地使用文本块的前景十六进制颜色。它不起作用。请帮助我

我试过这个例子

txtHome.Foreground = new SolidColorBrush(Colors.Red);
但我想使用十六进制颜色代码,而不是使用color.red等

试试这个:

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"));

您可以使用此函数将十六进制颜色转换为颜色值,然后可以在textblock上进行设置

公共颜色转换器StringToColor(字符串十六进制) {

        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);
    }
颜色1=转换为颜色(“F0A30A”);
txtHome.前台=新的SolidColorBrush(color1);

创建下面提到的方法

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");

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

var brush=new SolidColorBrush(Color.FromArgb(0xFF, 0xD0, 0x20, 0x30));
我刚刚使用该方法直接转换颜色的十六进制表示。第一个参数是alpha或opacity,您可以始终使用255/0xFF来指定完全不透明度。然后,它只提供表示颜色的3个字节,它们的顺序与在颜色的普通十六进制表示中显示的顺序相同。在上面的示例中:
“D02030”

此外,您可以考虑创建一个表示“代码> SolidColorBrush < /代码>的可重用资源,并将其添加到App.xAML文件中,使其成为全局可用的:

<SolidColorBrush x:Key="myBrush" Color="#D02030" />

非常感谢你,普拉文
<SolidColorBrush x:Key="myBrush" Color="#D02030" />
txtHome.Foreground =  App.Current.Resources["myBrush"] as SolidColorBrush;