将十六进制字符串转换为颜

时间:2012-12-06 16:26:50

标签: c# colors hex

我在QueryString中传递十六进制值。我想将其转换为颜色,以在网格视图中的单元格中使用ForeColor。试了System.Drawing.ColorTranslator.FromHtml()System.Drawing.Color.FromArgb()没有运气。

我的QueryString是urlencoded,因此重要的部分如下:

QueryString...&color=%23AA4643

以下是我试过的方法.FromArg:

string sColor = Request.QueryString["color"]; // sColor is now #AA4643
Int32 iColorInt = Convert.ToInt32(sColor,16); //Get error message - Could not find any recognizable digits
Color curveColor = System.Drawing.Color.FromArgb(iColorInt); //Never makes it here

以下是我的尝试.FromHtml:

string sColor = Request.QueryString["color"]; 
System.Drawing.Color myColor = new System.Drawing.Color();
myColor = System.Drawing.ColorTranslator.FromHtml(sColor);

在这种情况下,myColor设置为 - myColor =“{Name = ffaa4643,ARGB =(255,170,70,67)}”

但是当我去使用它时,我收到一个错误:

  

指数超出范围。必须是非负数且小于集合的大小。   参数名称:index

任何和所有帮助都非常感谢

1 个答案:

答案 0 :(得分:7)

试试这个:

string sColor = Request.QueryString["color"]; // sColor is now #AA4643
Int32 iColorInt = Convert.ToInt32(sColor.Substring(1),16); 
Color curveColor = System.Drawing.Color.FromArgb(iColorInt);