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

Ric*_*chP 3 c# hex colors

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

我的QueryString是urlencoded所以重要的部分看起来像:

QueryString...&color=%23AA4643
Run Code Online (Sandbox Code Playgroud)

以下是我试过的方法.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
Run Code Online (Sandbox Code Playgroud)

以下是我的尝试.FromHtml:

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

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

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

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

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

Ser*_*eyS 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); 
Run Code Online (Sandbox Code Playgroud)