CSharp examples for System.Drawing:Color HSV
Color To Hsv
using System.Drawing.Imaging; using System.Drawing; using System.Text; using System.Collections.Generic; using System;//w w w . jav a 2s.c o m public class Main{ static public void ToHsv(Color color, out int Hue, out int Saturation, out int Value) { // In this function, R, G, and B values must be scaled // to be between 0 and 1. // HsvColor.Hue will be a value between 0 and 360, and // HsvColor.Saturation and value are between 0 and 1. double min; double max; double delta; double r = (double)color.R / 255; double g = (double)color.G / 255; double b = (double)color.B / 255; double h; double s; double v; min = Math.Min(Math.Min(r, g), b); max = Math.Max(Math.Max(r, g), b); v = max; delta = max - min; if (max == 0 || delta == 0) { // R, G, and B must be 0, or all the same. // In this case, S is 0, and H is undefined. // Using H = 0 is as good as any... s = 0; h = 0; } else { s = delta / max; if (r == max) { // Between Yellow and Magenta h = (g - b) / delta; } else if (g == max) { // Between Cyan and Yellow h = 2 + (b - r) / delta; } else { // Between Magenta and Cyan h = 4 + (r - g) / delta; } } // Scale h to be between 0 and 360. // This may require adding 360, if the value // is negative. h *= 60; if (h < 0) { h += 360; } // Scale to the requirements of this // application. All values are between 0 and 255. Hue = (int)h; Saturation = (int)(s * 100); Value = (int)(v * 100); } }