如何将Red, Green, Blue值转换为Long,并在C#中正确地返回到Red, Green, Blue?
我到处找遍了,找不到有用的东西。
发布于 2015-08-16 07:33:42
public enum ColorFormat
{
RGB, RGBA, ARGB
}
public static int ColorToDecimal(Color color, ColorFormat format = ColorFormat.RGB)
{
switch (format)
{
default:
case ColorFormat.RGB:
return color.R << 16 | color.G << 8 | color.B;
case ColorFormat.RGBA:
return color.R << 24 | color.G << 16 | color.B << 8 | color.A;
case ColorFormat.ARGB:
return color.A << 24 | color.R << 16 | color.G << 8 | color.B;
}
}
public static Color DecimalToColor(int dec, ColorFormat format = ColorFormat.RGB)
{
switch (format)
{
default:
case ColorFormat.RGB:
return Color.FromArgb((dec >> 16) & 0xFF, (dec >> 8) & 0xFF, dec & 0xFF);
case ColorFormat.RGBA:
return Color.FromArgb(dec & 0xFF, (dec >> 24) & 0xFF, (dec >> 16) & 0xFF, (dec >> 8) & 0xFF);
case ColorFormat.ARGB:
return Color.FromArgb((dec >> 24) & 0xFF, (dec >> 16) & 0xFF, (dec >> 8) & 0xFF, dec & 0xFF);
}
}发布于 2015-08-16 07:34:01
Color c = Color.FromArgb(30, 20, 120); // construct a color from RGB values
long redVal = c.R; //Extract Red value as long
long greenVal = c.G;//Extract Green Value as Long
long blueVal = c.B;//Extract Blue Value as Long您还可以如下所示声明颜色:
Color c = Color.Beige;然后是c.R=245,c.G=245,c.B=220
https://stackoverflow.com/questions/32032776
复制相似问题