从自定义颜色字符串返回SolidColorBrush

时间:2014-12-09 10:07:11

标签: c# windows-phone-8

我有这条线,它有效,但我怎么能返回一个custum颜色字符串,例如"#2228D4"

return (Boolean)value ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Yellow);

它是Windows Phone 8应用程序,因此我无法使用WPF ColorConverter

2 个答案:

答案 0 :(得分:3)

您可以使用以下方法将ColorString(十六进制代码)转换为Color对象。

    public Color ConvertStringToColor(String hex)
    {
        //remove the # at the front
        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);
    }

您可以使用以下代码返回画笔

(Boolean)value ? new SolidColorBrush(ConvertStringToColor("FFFF0000")) : new SolidColorBrush(ConvertStringToColor("FF00FF00"));

答案 1 :(得分:0)

当您在手机上时,您无法访问BrushConverter。通过打破六角形并将其分配给每个组件来实现:

var color = new Color() {R = 0x22, G = 0x28, B = 0xD4};
var brush = new SolidColorBrush(color);

显然,保持对画笔的引用而不是一遍又一遍地重新创建:)