我基本上做了一些渐变,通过给出网格颜色的图块,它看起来像这样:
现在,我想要反转它,所以光是白色的,周围是黑色的,我该怎么做呢?我尝试了很多,但我没有做过任何工作。
以下是代码:
foreach (Tile tiles in Tiles)
{
tiles.distance = (mousePos - tiles.pos).Length();
tiles.color = new Color(tiles.distance / size, tiles.distance / size, tiles.distance / size);
}
答案 0 :(得分:1)
我很抱歉,如果这看起来很明显(意味着你已经尝试过了),但我自己做了很多次没想过......
您使用的是哪种数据类型? tiles.distance看起来像一个浮点数,这意味着除法将解析为浮点数,这反过来意味着你最终将使用颜色(单,单,单)构造函数而不是颜色(字节,字节,字节) )构造函数。这意味着你必须从1而不是255 / 0xFF中减去,否则你最终得到的值远远超过1(上限 - >白色)。
如果这是问题,则会出现以下情况:
tiles.color = new Color(1 - tiles.distance / size, 1 - tiles.distance / size, 1 - tiles.distance / size);
答案 1 :(得分:0)
从0xFF中减去每个颜色分量:
float value = 0xFF - tiles.distance / size;
tiles.color = new Color(value, value, value);
答案 2 :(得分:0)
tiles.color = new Color(255 - (tiles.distance / size), 255 - (tiles.distance / size),255 - (tiles.distance / size));
减去255(全白)