public static void GetColorComponents(ColorModel colorModel, TextureBitmap.Color color, out Single componentA, out Single componentB, out Single componentC) { componentA = 0.0f; componentB = 0.0f; componentC = 0.0f; switch (colorModel) { case ColorModel.RedGreenBlue: componentA = color.R; componentB = color.G; componentC = color.B; break; case ColorModel.HueSaturationBrightness: componentA = color.GetHue(); componentB = color.GetSaturation(); componentC = color.GetBrightness(); break; case ColorModel.LabColorSpace: RGBtoLab(color.R, color.G, color.B, out componentA, out componentB, out componentC); break; case ColorModel.XYZ: RGBtoXYZ(color.R, color.G, color.B, out componentA, out componentB, out componentC); break; } }
/// <summary> /// Initializes a new instance of the <see cref="DistinctColorInfo"/> struct. /// </summary> public DistinctColorInfo(TextureBitmap.Color color) { Color = color.ToARGB(); Count = 1; Hue = Convert.ToInt32(color.GetHue() * Factor); Saturation = Convert.ToInt32(color.GetSaturation() * Factor); Brightness = Convert.ToInt32(color.GetBrightness() * Factor); }
public static void GetColorComponents(ColorModel colorModel, TextureBitmap.Color color, TextureBitmap.Color targetColor, out Single componentA, out Single componentB, out Single componentC) { componentA = 0.0f; componentB = 0.0f; componentC = 0.0f; switch (colorModel) { case ColorModel.RedGreenBlue: componentA = color.R - targetColor.R; componentB = color.G - targetColor.G; componentC = color.B - targetColor.B; break; case ColorModel.HueSaturationBrightness: componentA = color.GetHue() - targetColor.GetHue(); componentB = color.GetSaturation() - targetColor.GetSaturation(); componentC = color.GetBrightness() - targetColor.GetBrightness(); break; case ColorModel.LabColorSpace: Single sourceL, sourceA, sourceB; Single targetL, targetA, targetB; RGBtoLab(color.R, color.G, color.B, out sourceL, out sourceA, out sourceB); RGBtoLab(targetColor.R, targetColor.G, targetColor.B, out targetL, out targetA, out targetB); componentA = sourceL - targetL; componentB = sourceA - targetA; componentC = sourceB - targetB; break; case ColorModel.XYZ: Single sourceX, sourceY, sourceZ; Single targetX, targetY, targetZ; RGBtoXYZ(color.R, color.G, color.B, out sourceX, out sourceY, out sourceZ); RGBtoXYZ(targetColor.R, targetColor.G, targetColor.B, out targetX, out targetY, out targetZ); componentA = sourceX - targetX; componentB = sourceY - targetY; componentC = sourceZ - targetZ; break; } }
public static Int32 GetComponentA(ColorModel colorModel, TextureBitmap.Color color) { Int32 result = 0; switch (colorModel) { case ColorModel.RedGreenBlue: result = color.R; break; case ColorModel.HueSaturationBrightness: result = Convert.ToInt32(color.GetHue() / HueFactor); break; case ColorModel.LabColorSpace: Single l, a, b; RGBtoLab(color.R, color.G, color.B, out l, out a, out b); result = Convert.ToInt32(l * 255.0f); break; } return(result); }