在Windows Phone中转换颜色

时间:2012-07-31 09:59:32

标签: c# silverlight windows-phone-7 silverlight-4.0

在我的Windows Phone application中,我从xml获取颜色,然后将其绑定到某个元素 我发现在我的情况下我得到了错误的颜色。

这是我的代码:

 var resources = feedsModule.getResources().getColorResource("HeaderColor") ??
     FeedHandler.GetInstance().MainApp.getResources().getColorResource("HeaderColor");
     if (resources != null)
     {
      var colourText = Color.FromArgb(255,Convert.ToByte(resources.getValue().Substring(1, 2), 16),
                       Convert.ToByte(resources.getValue().Substring(3, 2), 16),
                      Convert.ToByte(resources.getValue().Substring(5, 2), 16));

因此在转换颜色后,我得到了错误的结果。在xml中我有这个:

 <Color name="HeaderColor">#FFc50000</Color>

并转换为#FFFFC500

1 个答案:

答案 0 :(得分:12)

你应该使用一些第三方转换器。

Here is one of them

然后你可以这样使用它:

Color color = (Color)(new HexColor(resources.GetValue());

您也可以使用this link中的方法,它也可以。

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