dth*_*her 15 wpf serialization colors
我需要将WPF应用程序中使用的颜色序列化到数据库.我想使用sRGB值,因为他们对我们这些在过去几年中进行Web开发的人更熟悉.
如何从System.Windows.Media.Color对象获取ARGB字符串(如#FFFFFFFF)?
更新:我被MSDN上的文档误导了.正如下面提到的@Kris,该ToString()方法的文档不正确.虽然它说ToString()"使用ScRGB通道创建颜色的字符串表示",但如果使用该FromARGB()方法创建颜色,它实际上将返回ARGB十六进制格式的字符串.我想这是一个没有文档记录的功能.
Kri*_*is 19
如果使用Color.FromRgb或Color.FromArgb而不是FromScRgb创建颜色,则应从ToString获取十六进制字符串结果.
如果你想手动完成
string.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", c.A, c.R, c.G, c.B);
Run Code Online (Sandbox Code Playgroud)
你可以使用int.Parse(,NumberStyles.HexNumber)来反过来.
注意sRGB和scRGB指的是不同的颜色空间,请确保使用您想要的颜色空间.
你也可以这样做:
string myHex = new ColorConverter().ConvertToString(myColor);
Run Code Online (Sandbox Code Playgroud)
我创建了一个结构来处理转换和序列化。它为我解决了两个问题:它是可序列化的,并且可以纠正拼写;)
[Serializable]
public struct Colour
{
public byte A;
public byte R;
public byte G;
public byte B;
public Colour(byte a, byte r, byte g, byte b)
{
A = a;
R = r;
G = g;
B = b;
}
public Colour(Color color)
: this(color.A, color.R, color.G, color.B)
{
}
public static implicit operator Colour(Color color)
{
return new Colour(color);
}
public static implicit operator Color(Colour colour)
{
return Color.FromArgb(colour.A, colour.R, colour.G, colour.B);
}
}
Run Code Online (Sandbox Code Playgroud)
只使用Colour你会使用的地方System.Windows.Media.Color
| 归档时间: |
|
| 查看次数: |
11843 次 |
| 最近记录: |