【问题标题】:Saving Color as an integer (into the DB)将颜色保存为整数(存入数据库)
【发布时间】:2014-08-21 19:44:07
【问题描述】:

我正在使用返回颜色的 WPF 颜色选择器。但是,我很难将该颜色保存为整数并加载到数据库中。我找到了一些解决方案,但都没有奏效,而且都很复杂(而且很旧)。 希望有一个更新,更优雅的解决方案。 提前致谢

【问题讨论】:

  • 您的意思是将 RGBA 值保存为 int 吗?所以像 255,255,255,255 会是 255255255255?
  • 例如,我只需要能够将一个值保存到数据库中,然后加载它并将其用于字体颜色。
  • 只使用 char 类型并保存像“#FFFFFF”这样的十六进制
  • 不太确定如何做到这一点 - 从未使用过颜色。
  • 好的,那么这些颜色的最终目标是什么?你以后会不会把它们从数据库中拉出来,然后用它们做事。另外,你能显示你从选择器中获取颜色的代码吗?

标签: c# colors type-conversion


【解决方案1】:

我建议在 RGB 值的整数上使用十六进制代码。

以下代码取自here,属于用户@AriRoth

private static String HexConverter(System.Drawing.Color c)
{
    return "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
}

此方法应将您的颜色转换为十六进制代码的字符串。然后,您可以将其保存到您的数据库中。如果您打算稍后将这些用于 CSS 目的,那么十六进制代码就足够了。如果您出于某种原因需要将十六进制转换回颜色对象,您可以使用

using System.Windows.Media;

Color color = (Color)ColorConverter.ConvertFromString(YourHexCodeHere);

【讨论】:

  • 谢谢,所以数据库应该存储 varchar 而不是 int,对吧?
  • @user970696 很抱歉在发布后不久不得不离开工作。是的,无论哪种方式,数据库中的类型都可以是 varchar 或 char。如果这个答案有帮助,请随时点赞/接受。
猜你喜欢
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 2021-06-11
  • 2010-09-17
相关资源
最近更新 更多