繁体   English   中英

将System.Drawing.Color转换为int?

[英]Convert System.Drawing.Color to an int?

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

如果FromArgb()朝一个方向工作,则ToArgb()应该朝另一个方向工作:

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

...但是我也不确定我是否感谢所涉及的所有细微差别。 如果这样做不起作用,请说明它是如何失败的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM