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 :).
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.
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 ;).
Hola, échale un vistazo a los métodos LockRectangle/Unlock de Texture.
Aquí (http://www.gamedev.net/community/forums/topic.asp?topic_id=327935) tienes un post en GameDev con información que te podría ser útil.
Saludos.
Muchas gracias, con un poco de ese post y algo más de investigación he conseguido lo que quería, lo dicho gracias :).