将System.Drawing.Color转换为int?

时间:2018-10-29 21:33:18

标签: c# .net

在数据库中,我们将颜色存储为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 ????;
}

1 个答案:

答案 0 :(得分:2)

如果FromArgb()朝着一个方向努力,看来ToArgb()应该朝着另一个方向努力:

private string RevertColor(string value)
{    
    return System.Drawing.ColorTranslator.FromHtml(value).ToArgb().ToString();
}

...但是我也不确定我是否对所涉及的所有细微差别表示赞赏。如果这样做不能解决问题,请说明如何失败。

如果它们实际上是数据库中的int值,那么您根本想要一个字符串似乎也很奇怪。令我担心的是,您可能会在将这些值保存到SQL中时使用真的不安全做法。如果没有其他问题,那么像这样在字符串之间来回转换的性能次佳。由于文化/国际化问题,这些转换操作比您想象的要昂贵得多。