0

我基本上做了某种渐变,通过给一个网格颜色的瓷砖,它看起来像这样:

在此处输入图像描述

现在,我想把它反转,所以光是白色的,周围是黑色的,我该怎么做呢?我尝试了很多,但我没有做任何工作。

这是代码:

            foreach (Tile tiles in Tiles)
        {
            tiles.distance = (mousePos - tiles.pos).Length();

            tiles.color = new Color(tiles.distance / size, tiles.distance / size, tiles.distance / size);
        }
4

3 回答 3

1

如果这看起来很明显(意味着您已经尝试过),我很抱歉,但我自己没有考虑太多次就这样做了......

您正在使用哪些数据类型?例如,tiles.distance 看起来像一个浮点数,这意味着除法将解析为一个浮点数,这反过来意味着您最终将使用 Color(Single, Single, Single) 构造函数而不是 Color(Byte, Byte, Byte ) 构造函数。这意味着您必须从 1 而不是 255/0xFF 中减去,否则您最终会得到一个远高于 1 的值(上限 -> 白色)。

如果这是问题,以下将:

tiles.color = new Color(1 - tiles.distance / size, 1 - tiles.distance / size, 1 - tiles.distance / size);
于 2012-10-25T06:45:28.933 回答
0

只需从 0xFF 中减去每个颜色分量:

float value = 0xFF - tiles.distance / size;
tiles.color = new Color(value, value, value);
于 2012-10-24T23:29:15.277 回答
0
tiles.color = new Color(255 - (tiles.distance / size), 255 - (tiles.distance / size),255 - (tiles.distance / size));

从 255 中减去(全白)

于 2012-10-25T00:16:25.533 回答