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 はたとえば float のように見えます。これは、除算が float に解決されることを意味します。つまり、Color( Byte, Byte, Byte ではなく、 Color( Single, Single, Single ) コンストラクターを使用することになります。 ) コンストラクター。これは、255/0xFF ではなく 1 から減算する必要があることを意味します。そうしないと、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 に答える