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

时间:2014-03-11 06:10:10

标签: windows-phone-8

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

我试过这个例子

txtHome.Foreground = new SolidColorBrush(Colors.Red);

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

5 个答案:

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