C# 反转渐变/灯光
我基本上做了一些渐变,通过给一个格子颜色的瓷砖,它看起来像这样: 现在,我想反转这个,光线是白色的,周围是黑色的,我该怎么做呢?我试了很多,但都没用 代码如下:C# 反转渐变/灯光,c#,xna,distance,tiles,lighting,C#,Xna,Distance,Tiles,Lighting,我基本上做了一些渐变,通过给一个格子颜色的瓷砖,它看起来像这样: 现在,我想反转这个,光线是白色的,周围是黑色的,我该怎么做呢?我试了很多,但都没用 代码如下: foreach (Tile tiles in Tiles) { tiles.distance = (mousePos - tiles.pos).Length(); tiles.color = new Color(tiles.distance /
foreach (Tile tiles in Tiles)
{
tiles.distance = (mousePos - tiles.pos).Length();
tiles.color = new Color(tiles.distance / size, tiles.distance / size, tiles.distance / size);
}
只需从0xFF中减去每个颜色分量:
float value = 0xFF - tiles.distance / size;
tiles.color = new Color(value, value, value);
从255减去(全白色)如果这看起来很明显(意味着你已经尝试过了),我很抱歉,但我自己没有想太多次就这么做了 您使用的是什么数据类型?例如,tiles.distance看起来像一个float,这意味着除法将解析为一个float,这反过来意味着您将使用颜色(单,单,单)构造函数,而不是颜色(字节,字节,字节)构造函数。这意味着您必须从1中减去,而不是从255/0xFF中减去,否则您将得到远高于1的值(capped->white) 如果这是一个问题,则以下内容将:
tiles.color = new Color(1 - tiles.distance / size, 1 - tiles.distance / size, 1 - tiles.distance / size);
这对我不起作用,我只得到了白色的瓷砖,就像图中一样,但没有梯度。
tiles.color = new Color(1 - tiles.distance / size, 1 - tiles.distance / size, 1 - tiles.distance / size);