作者:手机用户2602907485 | 来源:互联网 | 2023-10-13 13:36
把color类型存到数据库以后,有时是Color[A255,R192,G255,B192]样子的,有时是Color[red]样子的,怎么转化成为ARGB的颜色值或是直接转化为Color
把color类型存到数据库以后,有时是Color [A=255, R=192, G=255, B=192]样子的,有时是Color[red]样子的,怎么转化成为ARGB的颜色值或是直接转化为Color.
10 个解决方案
https://q.cnblogs.com/q/46917/
这是哪本教材上的作业吗?
Color 的 ToString() 是这样的(随便找一个方式看 .net 源代码)
// System.Windows.Media.Color
public override string ToString()
{
string format = this.isFromScRgb ? "R" : null;
return this.ConvertToString(format, null);
}
// System.Windows.Media.Color
public string ToString(IFormatProvider provider)
{
string format = this.isFromScRgb ? "R" : null;
return this.ConvertToString(format, provider);
}
// System.Windows.Media.Color
internal string ConvertToString(string format, IFormatProvider provider)
{
StringBuilder stringBuilder = new StringBuilder();
if (this.context == null)
{
if (format == null)
{
stringBuilder.AppendFormat(provider, "#{0:X2}", new object[]
{
this.sRgbColor.a
});
stringBuilder.AppendFormat(provider, "{0:X2}", new object[]
{
this.sRgbColor.r
});
stringBuilder.AppendFormat(provider, "{0:X2}", new object[]
{
this.sRgbColor.g
});
stringBuilder.AppendFormat(provider, "{0:X2}", new object[]
{
this.sRgbColor.b
});
}
else
{
char numericListSeparator = TokenizerHelper.GetNumericListSeparator(provider);
stringBuilder.AppendFormat(provider, string.Concat(new string[]
{
"sc#{1:",
format,
"}{0} {2:",
format,
"}{0} {3:",
format,
"}{0} {4:",
format,
"}"
}), new object[]
{
numericListSeparator,
this.scRgbColor.a,
this.scRgbColor.r,
this.scRgbColor.g,
this.scRgbColor.b
});
}
}
else
{
char numericListSeparator2 = TokenizerHelper.GetNumericListSeparator(provider);
format = "R";
string components = new Uri(this.context.ProfileUri.GetComponents(UriComponents.SerializationInfoString, UriFormat.SafeUnescaped), this.context.ProfileUri.IsAbsoluteUri ? UriKind.Absolute : UriKind.Relative).GetComponents(UriComponents.SerializationInfoString, UriFormat.UriEscaped);
stringBuilder.AppendFormat(provider, "{0}{1} ", new object[]
{
"ContextColor ",
components
});
stringBuilder.AppendFormat(provider, "{1:" + format + "}{0}", new object[]
{
numericListSeparator2,
this.scRgbColor.a
});
for (int i = 0; i < this.nativeColorValue.GetLength(0); i++)
{
stringBuilder.AppendFormat(provider, "{0:" + format + "}", new object[]
{
this.nativeColorValue[i]
});
if (i < this.nativeColorValue.GetLength(0) - 1)
{
stringBuilder.AppendFormat(provider, "{0}", new object[]
{
numericListSeparator2
});
}
}
}
return stringBuilder.ToString();
}
但是,这一堆东西的背后,只能说明 ToString 是怎样打印出来的。
而你只说的是“
把color类型存到数据库以后”,你应该能明白这里边的巨大区别吧。
没什么代码,我就绑定了一个第三方的控件ultraColorPicker1。 直接存入后台,就是这数据,但获取出来就不知怎样转化了。
试试看有没有其他属性能统一保存的内容。或是在保存或是读取时,判断一下文字的内容。
我之前用另一个颜色选取控件遇到了类似的情况,也是没想到解决办法,就限定了控件的颜色选取方式,只生成“Color[red]”这样的结果,将来在读取、设置时,就方便了。
自己整个列表咯。从color枚举中把所有有名字的颜色拎出来,把rgb值读出来做映射。
希望你用的第三方控件和你用的同一个图形库。