【问题标题】:Xamarin Forms ColorXamarin 窗体颜色
【发布时间】:2016-09-24 12:55:38
【问题描述】:

我想在本地数据库中保存用户选择的颜色(它是 Xamarin.Forms.Color),所以我使用 ToString 方法将其保存为字符串,保存的颜色采用以下语法:[Color: A=1 , R=1, G=0.400000005960464, B=1, 色相=0.833333313465118, 饱和度=1, 亮度=0.699999988079071] 我想从数据库中检索它,但我必须将它转换回 Xamarin.Forms.Color (它有类似 Color.FromHex 或 Color.FromHlsa 或 Color.FromRgb 的方法......)

谁能告诉我将其转换回来的最佳方法?

谢谢

【问题讨论】:

  • 如何从用户那里获取颜色?它是常量列表,还是来自 rgb 或来自十六进制?
  • 这是一个 xamarin 表单颜色列表

标签: colors xamarin.forms


【解决方案1】:

您可以将 RGB 值存储在本地数据库中,然后使用 Color.FromRBG(n,n,n); 将这些整数转换回来,或者您可以存储一个字符串并使用 Color.FromHex("#"+ localDBProperty); 执行此操作这是一个参考链接:

https://developer.xamarin.com/api/member/Xamarin.Forms.Color.FromHex/p/System.String/

【讨论】:

  • 感谢您的回答,检索值(双精度)然后将其转换为十六进制有点长
【解决方案2】:

Xamarin.FormsColors 可以从 ARGB 或 AHSL 创建。从一种模式到另一种模式的转换是自动进行的,因此您无需将两种格式都保存在数据库中(您正在存储 ARGBHSL)。

现在,有很多方法可以从这些值的子集创建颜色:

public Color(double r, double g, double b, double a);
public static Color FromHex(string hex); //one of the following: #rgb, #argb, #rrggbb, #aarrggbb, the leading # is optional
public static Color FromUint(uint argb);
public static Color FromRgba(int r, int g, int b, int a);
public static Color FromRgb(int r, int g, int b);
public static Color FromRgba(double r, double g, double b, double a);
public static Color FromRgb(double r, double g, double b);
public static Color FromHsla(double h, double s, double l, double a = 1d);

我很确定您会在满足您需求的那些中找到构造函数或工厂方法。

【讨论】:

  • 感谢您的回答,我会尝试将 RGBA 颜色保存在四个不同的变量中,然后从数据库中取回。
猜你喜欢
  • 2021-08-16
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多