【问题标题】:How to Store a Windows.UI.Color Object in a SQLite Database?如何在 SQLite 数据库中存储 Windows.UI.Color 对象?
【发布时间】:2013-02-07 03:25:28
【问题描述】:

我使用SQLite Datatabase 来存储我在C# and XAML 中开发的Windows 8 Store App 的数据。

现在我正在寻找一种简单的方法来存储 Color 对象,该对象应用作此数据库中的 XAML Color (Windows.UI.Color)。 所以我想我必须在这种情况下将Color 对象转换为字符串或整数!?

我可以使用ToString() 方法将Color 转换为字符串表示形式,但我怎样才能将其转换回来?

【问题讨论】:

标签: c# sqlite xaml colors windows-store-apps


【解决方案1】:

我正在尝试使用以下答案来帮助您。

  1. 假设您希望存储 ColorObject.ToString() 值,例如#659EBCF5
  2. 请随意将其保存在 SqlLite 中作为 varchar aka 字符串。
  3. 当您需要它时,从 SqlLite 中读取并将其存储到一个变量中,比如 colorString。

假设 colorString = "#659EBCF5";

...

colorString = colorString.Substring(1, colorString.Length - 1);//remove the #
        System.Globalization.NumberStyles style = System.Globalization.NumberStyles.HexNumber;
        int hexColorAsInteger = int.Parse(colorString , style);
        byte[] colorData = BitConverter.GetBytes(hexColorAsInteger);

        //Mind the order.
        byte alpha = colorData[3];
        byte red = colorData[2];
        byte green = colorData[1];
        byte blue = colorData[0];

        Color color = Color.FromArgb(alpha, red, green, blue);

【讨论】:

  • 在 # e.g. 之后的任何十六进制字符串中都意识到了这一点"#659EBCF5" 65 是 alpha,9E 是红色,BC 是绿色,F5 是十六进制的蓝色。所以需要少一点解析,只需将这些十六进制值转换为十进制,就可以轻松构造颜色。 :)
【解决方案2】:

解决方案是将 ARGB 字节值存储在数据库中,然后您可以使用 Color.FromArgb(a, r, g, b) 方法从这些存储的字节值中获取颜色。

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.color.fromargb

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 2010-11-17
    • 2011-02-25
    • 2017-04-03
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    相关资源
    最近更新 更多