Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I would like to set an individual pixel in Slick (i.e Image.setPixel(x, y, r, b, g)) but I can't figure out how.

There is an Image.setPixel function but it doesn't take x and y coordinates. Any ideas?

share|improve this question

2 Answers 2

up vote 3 down vote accepted

You're in luck.

In Slick2D, Image has a function called getGraphics, which will return you a Slick2D graphics context.

While the graphics context does not have a setPixel function, it does have a fillRect function that you can use to set a single pixel.

Graphics g = img.getGraphics();
g.setColor(color);
g.fillRect(x,y,1,1);
g.flush();//IMPORTANT!!!

I just tried this out myself, which is how I discovered the importance of the flush call. Also check out the example ImageGraphcisTest.java in the Slick2D src folder.

share|improve this answer
    
A bit slow (when you are trying to set an 1000x1000 sized image with a different colour for each) but it works! Thanks! :) –  Darestium Mar 10 '12 at 0:13
2  
In that case, I recommend only flushing once. (Amused by obious bathroom reference) –  PlayDeezGames Mar 10 '12 at 13:43
    
ahaha! lol, suprisingly I didn't even relate flush with a bathroom until now. –  Darestium Mar 10 '12 at 22:22

If you really want to make this from an Image object then you must:

  • Get the texture with img.getTexture()
  • Retrieve the inherent pixel data with texture.getTextureData()
  • Parse the byte-array until you reach the pixel (x, y)
  • Change the RGB value of this pixel
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.