在数据库中,我们将颜色存储为int的颜色。 (不要问...这是一个非常古老的应用程序。)示例:
-16777216 =黑色
我能够将-16777216转换为#000000(我可以在UI中实际使用):
string htmlColor = ConvertToColor("-16777216");
将从此方法返回"#000000"
:
private string ConvertColor(string value)
{
int valInt = Convert.ToInt32(value);
System.Drawing.Color color = System.Drawing.Color.FromArgb(valInt);
return System.Drawing.ColorTranslator.ToHtml(color);
}
但是现在,要以相同的格式重新保存值,我在倒退时遇到了麻烦:
string intColor = RevertColor("#000000");
这是我到目前为止所拥有的:
private string RevertColor(string value)
{
System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(value);
return ????;
}
答案 0 :(得分:2)
如果FromArgb()
朝着一个方向努力,看来ToArgb()
应该朝着另一个方向努力:
private string RevertColor(string value)
{
return System.Drawing.ColorTranslator.FromHtml(value).ToArgb().ToString();
}
...但是我也不确定我是否对所涉及的所有细微差别表示赞赏。如果这样做不能解决问题,请说明如何失败。
如果它们实际上是数据库中的int
值,那么您根本想要一个字符串似乎也很奇怪。令我担心的是,您可能会在将这些值保存到SQL中时使用真的不安全做法。如果没有其他问题,那么像这样在字符串之间来回转换的性能次佳。由于文化/国际化问题,这些转换操作比您想象的要昂贵得多。