當我們打開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因爲是才學的,所以就把這個函數寫到博客裏順便把一些知識點給記下來。可能方法不是最好的。希望本博客對你有幫助!