Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cambiar color de un Texture

Iniciado por Endilicam, 30 de Noviembre de 2007, 04:30:06 PM

« anterior - próximo »

Endilicam

Buenas estoy haciendo un jueguecillo en C# y 2D y tengo una imagen cargada en un objeto Texture, pués me gustaría por ejemplo cambiar todos los píxeles de color rojo a color azul, es decir, todos los píxeles con color X cambiarlos a color Y.

Gracias :).

Martinez

Supongo que lo estas haciendo en XNA.


Texture2D texture;  // Textura
// Carga la textura de dnd sea

//....
Color x=new Color(255,0,0);  // Rojo
Color y=new Color(0,0,255);  // Azul

// Array de Color
Color[] pixels = new Color[texture.Width * texture.Height];

// Obtenemos los pixels
texture.GetData(pixels);

// Recorremos el array
for(int i=0; i<pixels.Length; i++)
  if(pixels[i]==x)
      pixels[i]=y;

// Ponemos los pixels en la textura
texture.SetData(pixels);



No lo he probado pero deberia funcionar. Fijate que el array es de una sola dimension.

Endilicam

Gracias por la respuesta pero no uso XNA, uso DirectX 9 con C#, he mirado algún método parecido al GetData del Texture2D y no he encontrado nada :/, así que sigo esperando ayuda ;).

BeRSeRKeR

Hola, échale un vistazo a los métodos LockRectangle/Unlock de Texture.

Aquí tienes un post en GameDev con información que te podría ser útil.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Endilicam

Muchas gracias, con un poco de ese post y algo más de investigación he conseguido lo que quería, lo dicho gracias :).






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.