我想用它來計算出,如果顏色是淺色或深色現在如何將Hex轉換爲RGB?
Evaluate whether a HEX value is dark or light
。它需要在int
float calcLuminance(int rgb)
{
int r = (rgb & 0xff0000) >> 16;
int g = (rgb & 0xff00) >> 8;
int b = (rgb & 0xff);
return (r*0.299f + g*0.587f + b*0.114f)/256;
}
雖然我有一個十六進制顏色。
我試圖做到這一點
var color = System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
int rgb = color.R + color.G + color.B;
var a = calcLuminance(rgb);
我0.11725我認爲這必須是在0-256或類似的東西的範圍。
我在做什麼錯?我是否需要將R
轉換爲int
?或者我剛剛離開?
@BlueRaja - Danny Pflughoeft-所以像這樣System.Drawing.Color someColor = System.Drawing.Color.FromArgb(color.R,color.G,color.B); float ab = someColor.GetBrightness();無論如何要做到這一點,而不是先把它轉換成rgb? – chobo2 2011-04-20 20:12:25
@ chobo2只是'float ab = System.Drawing.ColorTranslator.FromHtml(「#FFFFFF」)。GetBrightness();':) – 2011-04-20 20:14:10
@Chobo:那麼,你怎麼輸入*顏色到電腦中?你給**的例子是** RGB:''#FFFFFF「',第一個'」FF「'是R *(十六進制)*,第二個'」FF「'是G,第三個''FF''是B.在上面註釋中,@lasseespeholt表示,你可以從你的RGB字符串中得到一行中的亮度。 – 2011-04-20 20:15:15