我试图创建一个函数,输入两个RGB颜色和百分比,然后返回基于百分比的两个之间的颜色。Lua:褪色功能
我在网上找到了Dec2Hex函数,并认为它会有用。
现在我曾尝试:
function Dec2Hex(nValue) -- http://www.indigorose.com/forums/threads/10192-Convert-Hexadecimal-to-Decimal
if type(nValue) == "string" then
nValue = String.ToNumber(nValue);
end
nHexVal = string.format("%X", nValue); -- %X returns uppercase hex, %x gives lowercase letters
sHexVal = nHexVal.."";
if nValue < 16 then
return "0"..tostring(sHexVal)
else
return sHexVal
end
end
function fade_RGB(colour1, colour2, percentage)
r1, g1, b1 = string.match(colour1, "#([0-9A-F][0-9A-F])([0-9A-F][0-9A-F])([0-9A-F][0-9A-F])")
r2, g2, b2 = string.match(colour2, "#([0-9A-F][0-9A-F])([0-9A-F][0-9A-F])([0-9A-F][0-9A-F])")
r3 = (tonumber(r1, 16)/tonumber(r2, 16))*(percentage)
g3 = (tonumber(g1, 16)/tonumber(g2, 16))*(percentage)
b3 = (tonumber(b1, 16)/tonumber(b2, 16))*(percentage)
return "#"..Dec2Hex(r3).. Dec2Hex(g3)..Dec2Hex(b3)
end
我觉得我朝着正确的方向,但数学是不正确的,我无法弄清楚如何解决它。提前致谢!
'tonumber(r1,16)'做了什么?自从我最后碰到Lua以来已经有一段时间了。 –
将十六进制转换为十进制 –
像这样? http://hawwashsoft.proboards.com/thread/109/gradient-draw-library – warspyking