Voce pode utilizar interpolateBetween. exemplo:
tick = getTickCount()
local cor1, cor2, cor3 = interpolateBetween(math.random(0, 255), math.random(0,255), math.random(0, 255), math.random(0, 255), math.random(0,255), math.random(0, 255), getTickCount()-tick/9000, "Cosinecurve" ) -- Essa função vai ficar sorteado valores de 0 a 255, para usar em dxDrawImage, basta tentar:
dxDrawImage(0, 0, 0, 0, "Imagem", 0, 0, 0, tocolor(cor1, cor2, cor3, 255))
Espero que tenha funcionado, pois eu não testei, boa sorte amigão
Lembrando que a imagem deve ser BRANCA