当我们打开Color面板时,会发现下面有一个Hex Color值。这个是用16进制表示的颜色值。下面就是将16进制颜色值转变成color值的代码。
一.C#
private Color HexToColor(string hex) 十六进制转十进制 { byte DEC_r = byte.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber); byte DEC_g = byte.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber); byte DEC_b = byte.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber); byte DEC_a = byte.Parse(hex.Substring(6, 2), System.Globalization.NumberStyles.HexNumber); //Debug.Log("DEC_r"+ DEC_r + "DEC_g"+ DEC_g+ "DEC_b"+ DEC_b); float r = DEC_r / 255f; float g = DEC_g / 255f; float b = DEC_b / 255f; float a = DEC_a / 255f; return new Color(r,g,b,a); } private string ColorToHex(Color color) //十进制转十六进制 { int r = Mathf.RoundToInt(color.r*255.0f); int g = Mathf.RoundToInt(color.g * 255.0f); int b = Mathf.RoundToInt(color.b * 255.0f); int a = Mathf.RoundToInt(color.a * 255.0f); string hex = string.Format("{0:X2}{1:X2}{2:X2}{3:X2}",r,g,b,a); return hex; }
二.LUA
最近在学习Lua语言,就是对这个语言感兴趣,所以自己写了一个进制转换函数。代码如下:
function HexToColor(hex) local s s=string.sub(hex,1,2) //截取字符串 lua的索引是从1开始 local r=tonumber(s,16)/255 s=string.sub(hex,3,4) local g=tonumber(s,16)/255 s=string.sub(hex,5,6) local b=tonumber(s,16)/255 s=string.sub(hex,7,8) local a=tonumber(s,16)/255 return GetNum(r),GetNum(g),GetNum(b),GetNum(a) end function GetNum(a) return string.format('%0.3f',a) 截取小数位数 当截取两位,则是'%0.2f' end print(HexToColor('B7C4FFFF'))这个lua因为是才学的,所以就把这个函数写到博客里顺便把一些知识点给记下来。可能方法不是最好的。希望本博客对你有帮助!