在数据库中,我们把颜色存储为int's (不要问.这是一个非常古老的应用程序。)示例:
-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 ????;
}发布于 2018-10-29 21:37:32
如果FromArgb()朝一个方向工作,那么ToArgb()似乎应该朝另一个方向工作:
private string RevertColor(string value)
{
return System.Drawing.ColorTranslator.FromHtml(value).ToArgb().ToString();
}..。但我也不确定我是否理解其中的细微差别。如果这不能完成工作,请解释它是如何失败的。
如果字符串实际上是数据库中的int值,那么您完全想要一个字符串,这似乎也很奇怪。这让我感到害怕,您可能正在使用非常不安全的实践,以及如何将这些值保存在SQL中。如果没有其他的,那么在这样的字符串之间来回转换对于性能来说是次优的。由于文化/国际化问题,这些转换操作比您想象的要昂贵得多。
https://stackoverflow.com/questions/53054148
复制相似问题