在我的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
你应该使用一些第三方转换器。
这里是其中的一个 。
然后,你可以用它这样:
Color color = (Color)(new HexColor(resources.GetValue());
您也可以从使用方法这个环节 ,它的工作原理也是如此。
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);
}