C # XNA Как мне установить Texture2D для одного цвета? - PullRequest
0 голосов
/ 12 марта 2012

Как мне установить каждый непрозрачный пиксель в произвольной Texture2D, чтобы, скажем, Color.White временно?

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Не проверял это, но у меня в голове, вы могли бы сделать что-то вроде этого:

  Color[] az = Enumerable.Range(0, 100).Select(i => Color.White).ToArray();
  Texture2D texture = new Texture2D(GameRef.GraphicsDevice, 10, 10, false, SurfaceFormat.Color);
  texture.SetData(az);

Это сначала создает массив из 100 элементов и заполняет его Color.White Затем с помощьюSetData, мы заполняем его цветным массивом.

Просто убедитесь, что размер массива совпадает с размером текстуры (высота * ширина)

1 голос
/ 12 марта 2012

Просто условный цикл? Это не будет точным синтаксисом для этого, но что-то среди строк:

Texture2D texture = /*copy the texture you want to change*/;
Pixel pixel;/*note it's really inexact, so don't mind it, the idea is to show how it would be done*/
for(int i=0; i<texture.width; i++)
{
  for(int j=0; j<texture.height; j++)
  {
    pixel = texture.GetPixel(i, j);
    if(pixel.Color.A==1)
      pixel.Color = Color.White;
  }
}

Я не могу подчеркнуть это достаточно: НЕ просто скопируйте и вставьте это, это похоже на псевдокод, просто чтобы показать, как это будет сделано.

...